cqrs-testkit-0.10.0: src/Data/CQRS/Test/Internal/TestKitSettings.hs
module Data.CQRS.Test.Internal.TestKitSettings
( TestKitSettings(..)
, mkBracket
) where
import Control.Exception.Base (bracket)
-- | Test kit settings with a test context of type 'ctx'.
data TestKitSettings a ctx = TestKitSettings
{ tksSetUp :: IO a
, tksTearDown :: a -> IO ()
, tksMakeContext :: a -> IO ctx
}
-- | Create a "bracket" for a computation which ensures that
-- the setUp and tearDown phases happen no matter what else
-- happens during the computation.
mkBracket :: TestKitSettings a ctx -> (a -> IO b) -> IO b
mkBracket testKitSettings action =
bracket (tksSetUp testKitSettings)
(tksTearDown testKitSettings)
action