From a1e708107bb646d132a5410cee2419456d1d0f6b Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Thu, 12 Nov 2020 12:18:17 -0500 Subject: [PATCH 1/4] Add MonadState instance for SIO --- yesod-test/Yesod/Test.hs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/yesod-test/Yesod/Test.hs b/yesod-test/Yesod/Test.hs index c82e6cc0..a06f3957 100644 --- a/yesod-test/Yesod/Test.hs +++ b/yesod-test/Yesod/Test.hs @@ -245,6 +245,7 @@ import Network.Wai.Test hiding (assertHeader, assertNoHeader, request) import Control.Monad.Trans.Reader (ReaderT (..)) import Conduit (MonadThrow) import Control.Monad.IO.Class +import Control.Monad.State.Class import System.IO import Yesod.Core.Unsafe (runFakeHandler) import Yesod.Test.TransversingCSS @@ -1601,6 +1602,11 @@ instance YesodDispatch site => Hspec.Example (SIO (YesodExampleData site) a) whe newtype SIO s a = SIO (ReaderT (IORef s) IO a) deriving (Functor, Applicative, Monad, MonadIO, MonadThrow, MonadUnliftIO) +instance MonadState s (SIO s) + where + get = getSIO + put = putSIO + getSIO :: SIO s s getSIO = SIO $ ReaderT readIORef From 210c992601638dd6cda7d0ebda88263da408c99b Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Thu, 12 Nov 2020 12:49:28 -0500 Subject: [PATCH 2/4] Add MTL dependency --- yesod-test/yesod-test.cabal | 1 + 1 file changed, 1 insertion(+) diff --git a/yesod-test/yesod-test.cabal b/yesod-test/yesod-test.cabal index e2c6334e..bd597764 100644 --- a/yesod-test/yesod-test.cabal +++ b/yesod-test/yesod-test.cabal @@ -34,6 +34,7 @@ library , pretty-show >= 1.6 , text , time + , mtl >= 2.0.0 , transformers >= 0.2.2 , wai >= 3.0 , wai-extra From 7695803af59df1fb5dc3d48da014b47a4e2bac74 Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Fri, 13 Nov 2020 14:01:25 -0500 Subject: [PATCH 3/4] Fix ambiguous `get`/`put` issue --- yesod-test/Yesod/Test.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yesod-test/Yesod/Test.hs b/yesod-test/Yesod/Test.hs index a06f3957..f2285c0a 100644 --- a/yesod-test/Yesod/Test.hs +++ b/yesod-test/Yesod/Test.hs @@ -245,7 +245,7 @@ import Network.Wai.Test hiding (assertHeader, assertNoHeader, request) import Control.Monad.Trans.Reader (ReaderT (..)) import Conduit (MonadThrow) import Control.Monad.IO.Class -import Control.Monad.State.Class +import qualified Control.Monad.State.Class as MS import System.IO import Yesod.Core.Unsafe (runFakeHandler) import Yesod.Test.TransversingCSS @@ -1602,7 +1602,7 @@ instance YesodDispatch site => Hspec.Example (SIO (YesodExampleData site) a) whe newtype SIO s a = SIO (ReaderT (IORef s) IO a) deriving (Functor, Applicative, Monad, MonadIO, MonadThrow, MonadUnliftIO) -instance MonadState s (SIO s) +instance MS.MonadState s (SIO s) where get = getSIO put = putSIO From 63afa32fa07faad6d4177ca32ebc9743a5225863 Mon Sep 17 00:00:00 2001 From: Asad Saeeduddin Date: Tue, 15 Dec 2020 21:34:16 -0500 Subject: [PATCH 4/4] Add MPTC extension --- yesod-test/Yesod/Test.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/yesod-test/Yesod/Test.hs b/yesod-test/Yesod/Test.hs index f2285c0a..eced072c 100644 --- a/yesod-test/Yesod/Test.hs +++ b/yesod-test/Yesod/Test.hs @@ -7,6 +7,7 @@ {-# LANGUAGE ImplicitParams #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE MultiParamTypeClasses #-} {-| Yesod.Test is a pragmatic framework for testing web applications built