packages feed

mockcat-0.4.0.0: test/Test/MockCat/Impl.hs

{-# LANGUAGE FlexibleInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -Wno-name-shadowing #-}
module Test.MockCat.Impl (FileOperation, Finder) where

import Test.MockCat.Definition
import Data.Text
import Prelude hiding (readFile, writeFile)
import Control.Monad.Trans.Maybe
import Control.Monad.Reader

instance FileOperation IO where
  readFile _ = pure $ pack "IO content"
  writeFile _ _ = pure ()

instance Monad m => FileOperation (MaybeT m) where
  readFile _ = pure $ pack "MaybeT content"
  writeFile _ _ = undefined

instance Monad m => FileOperation (ReaderT String m) where
  readFile _ = do
    e <- ask
    pure $ pack "ReaderT content " <> pack e
  writeFile _ _ = undefined

instance Finder Int String IO where
  findIds = pure [1, 2, 3]
  findById id = pure $ "{id: " <> show id <> "}"