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 <> "}"