eventium-memory 0.3.1 → 0.3.2
raw patch · 3 files changed
+10/−23 lines, 3 files
Files
- eventium-memory.cabal +1/−1
- tests/Eventium/MetadataEnrichmentSpec.hs +6/−19
- tests/Eventium/ProcessManagerSpec.hs +3/−3
eventium-memory.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: eventium-memory-version: 0.3.1+version: 0.3.2 synopsis: In-memory implementations for eventium description: Eventium-memory provides in-memory implementations of event stores and projection caches for the Eventium event sourcing framework. This package is ideal for development, testing, and prototyping
tests/Eventium/MetadataEnrichmentSpec.hs view
@@ -5,7 +5,6 @@ import Control.Concurrent.STM import Data.IORef import Data.Maybe (isJust)-import Data.Time (UTCTime (..), fromGregorian) import Eventium import Eventium.Store.Memory import Test.Hspec@@ -33,31 +32,20 @@ events <- reader.getEvents (allEvents uuid) all (\e -> isJust e.metadata.createdAt) events `shouldBe` True - it "defaults occurredAt to createdAt" $ do- tvar <- eventMapTVar- let taggedWriter = tvarTaggedEventStoreWriter tvar- enrichedWriter = metadataEnrichingEventStoreWriter testCodec (runEventStoreWriterUsing atomically taggedWriter)- reader = runEventStoreReaderUsing atomically (tvarEventStoreReader tvar)- uuid = uuidFromInteger 1- _ <- enrichedWriter.storeEvents uuid NoStream [42 :: Int]- events <- reader.getEvents (allEvents uuid)- -- occurredAt should default to createdAt- map (\e -> e.metadata.occurredAt) events `shouldBe` map (\e -> e.metadata.createdAt) events- describe "metadataEnrichingEventStoreWriterWithEnricher" $ do- it "applies MetadataEnricher to set occurredAt" $ do+ it "applies MetadataEnricher to set correlationId" $ do tvar <- eventMapTVar- let pastTime = UTCTime (fromGregorian 2025 3 15) 0- enricher m = m {occurredAt = Just pastTime}+ let corrId = uuidFromInteger 99+ enricher m = m {correlationId = Just corrId} taggedWriter = tvarTaggedEventStoreWriter tvar enrichedWriter = metadataEnrichingEventStoreWriterWithEnricher enricher testCodec (runEventStoreWriterUsing atomically taggedWriter) reader = runEventStoreReaderUsing atomically (tvarEventStoreReader tvar) uuid = uuidFromInteger 1 _ <- enrichedWriter.storeEvents uuid NoStream [42 :: Int] events <- reader.getEvents (allEvents uuid)- map (\e -> e.metadata.occurredAt) events `shouldBe` [Just pastTime]+ map (\e -> e.metadata.correlationId) events `shouldBe` [Just corrId] - it "defaults occurredAt to createdAt when enricher does not set it" $ do+ it "leaves correlationId unset when enricher is id" $ do tvar <- eventMapTVar let taggedWriter = tvarTaggedEventStoreWriter tvar enrichedWriter = metadataEnrichingEventStoreWriterWithEnricher id testCodec (runEventStoreWriterUsing atomically taggedWriter)@@ -65,8 +53,7 @@ uuid = uuidFromInteger 1 _ <- enrichedWriter.storeEvents uuid NoStream [42 :: Int] events <- reader.getEvents (allEvents uuid)- -- occurredAt should default to createdAt- map (\e -> e.metadata.occurredAt) events `shouldBe` map (\e -> e.metadata.createdAt) events+ map (\e -> e.metadata.correlationId) events `shouldBe` [Nothing] describe "backward compatibility" $ do it "non-tagged writer still uses empty metadata" $ do
tests/Eventium/ProcessManagerSpec.hs view
@@ -3,7 +3,6 @@ module Eventium.ProcessManagerSpec (spec) where import Data.IORef-import Data.Time (UTCTime (..), fromGregorian) import Eventium.ProcessManager import Eventium.Projection import Eventium.Store.Class@@ -172,7 +171,8 @@ pure CommandSucceeded let target = uuidFromInteger 2- enricher m = m {occurredAt = Just (UTCTime (fromGregorian 2025 3 15) 0)}+ corrId = uuidFromInteger 99+ enricher m = m {correlationId = Just corrId} effects = [IssueCommand target (AcceptCredit 50) enricher] runProcessManagerEffects dispatcher effects@@ -182,5 +182,5 @@ [(_, cmd, enr)] -> do cmd `shouldBe` AcceptCredit 50 let enriched = enr (emptyMetadata "test")- enriched.occurredAt `shouldBe` Just (UTCTime (fromGregorian 2025 3 15) 0)+ enriched.correlationId `shouldBe` Just corrId _ -> expectationFailure "expected exactly one dispatch"