Merge pull request #1705 from masaeedu/addmonadstate

Add MonadState instance for SIO
This commit is contained in:
Michael Snoyman 2020-12-16 05:32:31 +02:00 committed by GitHub
commit 9cb8d2d369
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 0 deletions

View File

@ -7,6 +7,7 @@
{-# LANGUAGE ImplicitParams #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-|
Yesod.Test is a pragmatic framework for testing web applications built
@ -245,6 +246,7 @@ import Network.Wai.Test hiding (assertHeader, assertNoHeader, request)
import Control.Monad.Trans.Reader (ReaderT (..))
import Conduit (MonadThrow)
import Control.Monad.IO.Class
import qualified Control.Monad.State.Class as MS
import System.IO
import Yesod.Core.Unsafe (runFakeHandler)
import Yesod.Test.TransversingCSS
@ -1601,6 +1603,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 MS.MonadState s (SIO s)
where
get = getSIO
put = putSIO
getSIO :: SIO s s
getSIO = SIO $ ReaderT readIORef

View File

@ -34,6 +34,7 @@ library
, pretty-show >= 1.6
, text
, time
, mtl >= 2.0.0
, transformers >= 0.2.2
, wai >= 3.0
, wai-extra