packages feed

cqrs-memory-0.10.0: src-test/Main.hs

module Main (main) where

import           Test.Hspec (hspec)
import           Data.CQRS.Memory (newEventStore, newArchiveStore, newStorage, newSnapshotStore)
import           Data.CQRS.Test.TestKit (mkArchiveStoreSpec, mkEventStoreSpec, mkRepositorySpec, mkSnapshotStoreSpec, TestKitSettings(..))
import           System.Random (randomIO)

-- Run all the test suites.
main :: IO ()
main = do
  -- Setup
  let testKitSettings = TestKitSettings
       { tksMakeContext = \_ -> return ()
       , tksSetUp = newStorage
       , tksTearDown = \_ -> return ()
       }
  -- Run the full test kit.
  hspec $ do
     mkArchiveStoreSpec $ testKitSettings {
                              tksMakeContext = \c -> do
                                as <- newArchiveStore randomIO c
                                es <- newEventStore c
                                return $ (as, es)
                            }
     mkEventStoreSpec $ testKitSettings {
                            tksMakeContext = newEventStore
                        }
     mkRepositorySpec $ testKitSettings {
                            tksMakeContext = \c -> do
                              es <- newEventStore c
                              ss <- newSnapshotStore
                              return (es, ss)
                        }
     mkSnapshotStoreSpec $ testKitSettings {
                               tksMakeContext = \_ -> newSnapshotStore
                           }