sydtest-yesod 0.3.0.3 → 0.3.1.0
raw patch · 4 files changed
+45/−4 lines, 4 filesdep +wai
Dependencies added: wai
Files
- CHANGELOG.md +6/−0
- src/Test/Syd/Yesod.hs +3/−0
- src/Test/Syd/Yesod/Def.hs +33/−2
- sydtest-yesod.cabal +3/−2
CHANGELOG.md view
@@ -1,5 +1,11 @@ # Changelog +## [0.3.1.0] - 2025-12-29++### Added++* Support for adding Yesod Middlewares to your Yesod application within testing+ ## [0.3.0.3] - 2025-03-20 ### Changed
src/Test/Syd/Yesod.hs view
@@ -17,10 +17,13 @@ yesodSpecWithSiteSupplier, yesodSpecWithSiteSupplierWith, yesodSpecWithSiteSetupFunc,+ yesodSpecWithSiteSetupFuncWithMiddlewares, yesodSpecWithSiteSetupFunc',+ yesodSpecWithSiteSetupFuncWithMiddlewares', -- *** Setup functions yesodClientSetupFunc,+ yesodClientSetupFuncWithMiddlewares, -- ** Tests against a remote instance of a site yesodE2ESpec,
src/Test/Syd/Yesod/Def.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-}@@ -13,17 +14,24 @@ yesodSpecWithSiteSupplier, yesodSpecWithSiteSupplierWith, yesodSpecWithSiteSetupFunc,+ yesodSpecWithSiteSetupFuncWithMiddlewares, yesodSpecWithSiteSetupFunc',+ yesodSpecWithSiteSetupFuncWithMiddlewares', yesodClientSetupFunc,+ yesodClientSetupFuncWithMiddlewares, YesodSpec, yit, ydescribe, ) where +#if !MIN_VERSION_base(4,20,0)+import Data.List (foldl')+#endif import GHC.Stack (HasCallStack) import Network.HTTP.Client as HTTP import Network.URI+import Network.Wai (Middleware) import Test.Syd import Test.Syd.Wai import Test.Syd.Yesod.Client@@ -148,6 +156,15 @@ TestDef (HTTP.Manager ': outers) () yesodSpecWithSiteSetupFunc setupFunc = yesodSpecWithSiteSetupFunc' $ \man () -> setupFunc man +-- `yesodSpecWithSiteSetupFunc` with middlewares+yesodSpecWithSiteSetupFuncWithMiddlewares ::+ (YesodDispatch site) =>+ [Middleware] ->+ (HTTP.Manager -> SetupFunc site) ->+ TestDef (HTTP.Manager ': outers) (YesodClient site) ->+ TestDef (HTTP.Manager ': outers) ()+yesodSpecWithSiteSetupFuncWithMiddlewares middlewares setupFunc = yesodSpecWithSiteSetupFuncWithMiddlewares' middlewares $ \man () -> setupFunc man+ -- | Using a function that supplies a 'site', using a 'SetupFunc'. -- -- This function assumed that you've already set up the 'HTTP.Manager' beforehand using something like 'managerSpec'.@@ -160,9 +177,23 @@ site <- setupFunc man inner yesodClientSetupFunc man site +yesodSpecWithSiteSetupFuncWithMiddlewares' ::+ (YesodDispatch site) =>+ [Middleware] ->+ (HTTP.Manager -> inner -> SetupFunc site) ->+ TestDef (HTTP.Manager ': outers) (YesodClient site) ->+ TestDef (HTTP.Manager ': outers) inner+yesodSpecWithSiteSetupFuncWithMiddlewares' middlewares setupFunc = setupAroundWith' $ \man inner -> do+ site <- setupFunc man inner+ yesodClientSetupFuncWithMiddlewares middlewares man site+ yesodClientSetupFunc :: (YesodDispatch site) => HTTP.Manager -> site -> SetupFunc (YesodClient site)-yesodClientSetupFunc man site = do- application <- liftIO $ Yesod.toWaiAppPlain site+yesodClientSetupFunc = yesodClientSetupFuncWithMiddlewares []++yesodClientSetupFuncWithMiddlewares :: (YesodDispatch site) => [Middleware] -> HTTP.Manager -> site -> SetupFunc (YesodClient site)+yesodClientSetupFuncWithMiddlewares middlewares man site = do+ application' <- liftIO $ Yesod.toWaiAppPlain site+ let application = foldl' (\app middleware -> middleware app) application' middlewares p <- applicationSetupFunc application let client = YesodClient
sydtest-yesod.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.36.0.+-- This file has been generated from package.yaml by hpack version 0.37.0. -- -- see: https://github.com/sol/hpack name: sydtest-yesod-version: 0.3.0.3+version: 0.3.1.0 synopsis: A yesod companion library for sydtest category: Testing homepage: https://github.com/NorfairKing/sydtest#readme@@ -53,6 +53,7 @@ , sydtest-wai , text , time+ , wai , xml-conduit , yesod-core , yesod-test