@@ -6,6 +6,7 @@ import {randomUUID} from 'crypto';
66import {
77 DomainEvent ,
88 EmailAddress ,
9+ StoredDomainEvent ,
910 constructEvent ,
1011} from '../../../src/types' ;
1112import { commitEvent } from '../../../src/init-dependencies/event-store/commit-event' ;
@@ -49,11 +50,24 @@ describe('get all events', () => {
4950 const testLogger = createLogger ( { level : 'silent' } ) ;
5051 const dummyRefreshReadModel = ( ) => T . of ( undefined ) ;
5152
53+ const expectStoredEvent = (
54+ actualEvent : StoredDomainEvent ,
55+ expectedEvent : DomainEvent
56+ ) => {
57+ expect ( actualEvent ) . toMatchObject ( expectedEvent ) ;
58+ expect ( actualEvent . event_id ) . toEqual ( expect . any ( String ) ) ;
59+ } ;
60+
5261 let dbClient : libsqlClient . Client ;
5362 let persistEvent : ( event : DomainEvent ) => Promise < void > ;
54- let initalisedGetAllEvents : ( ) => Promise < ReadonlyArray < DomainEvent > > ;
55- let initalisedGetAllEventsByType : ( type : EventName ) => Promise < ReadonlyArray < DomainEvent > > ;
56- let initalisedGetAllEventsByTypes : ( type1 : EventName , type2 : EventName ) => Promise < ReadonlyArray < DomainEvent > > ;
63+ let initalisedGetAllEvents : ( ) => Promise < ReadonlyArray < StoredDomainEvent > > ;
64+ let initalisedGetAllEventsByType : (
65+ type : EventName
66+ ) => Promise < ReadonlyArray < StoredDomainEvent > > ;
67+ let initalisedGetAllEventsByTypes : (
68+ type1 : EventName ,
69+ type2 : EventName
70+ ) => Promise < ReadonlyArray < StoredDomainEvent > > ;
5771
5872 beforeEach ( async ( ) => {
5973 dbClient = libsqlClient . createClient ( { url : ':memory:' } ) ;
@@ -87,10 +101,10 @@ describe('get all events', () => {
87101 await persistEvent ( memberNumberLinkedToEmail ) ;
88102 await persistEvent ( equipmentTrainingQuizResult ) ;
89103 await persistEvent ( equipmentTrainingSheetRegistered ) ;
90- expect ( await initalisedGetAllEvents ( ) ) . toStrictEqual ( [
91- memberNumberLinkedToEmail ,
92- equipmentTrainingSheetRegistered ,
93- ] ) ;
104+ const events = await initalisedGetAllEvents ( ) ;
105+ expect ( events ) . toHaveLength ( 2 ) ;
106+ expectStoredEvent ( events [ 0 ] , memberNumberLinkedToEmail ) ;
107+ expectStoredEvent ( events [ 1 ] , equipmentTrainingSheetRegistered ) ;
94108 } ) ;
95109 } ) ;
96110
@@ -102,10 +116,12 @@ describe('get all events', () => {
102116 await persistEvent ( firstMatchingEvent ) ;
103117 await persistEvent ( nonMatchingEvent ) ;
104118 await persistEvent ( secondMatchingEvent ) ;
105- expect ( await initalisedGetAllEventsByType ( 'MemberNumberLinkedToEmail' ) ) . toStrictEqual ( [
106- firstMatchingEvent ,
107- secondMatchingEvent ,
108- ] ) ;
119+ const events = await initalisedGetAllEventsByType (
120+ 'MemberNumberLinkedToEmail'
121+ ) ;
122+ expect ( events ) . toHaveLength ( 2 ) ;
123+ expectStoredEvent ( events [ 0 ] , firstMatchingEvent ) ;
124+ expectStoredEvent ( events [ 1 ] , secondMatchingEvent ) ;
109125 } ) ;
110126
111127 it ( 'returns EquipmentTrainingQuizResult events when explicitly requested' , async ( ) => {
@@ -114,7 +130,11 @@ describe('get all events', () => {
114130 const nonMatchingEvent = arbitraryMemberNumberLinkedToEmailEvent ( ) ;
115131 await persistEvent ( equipmentTrainingQuizResult ) ;
116132 await persistEvent ( nonMatchingEvent ) ;
117- expect ( await initalisedGetAllEventsByType ( 'EquipmentTrainingQuizResult' ) ) . toStrictEqual ( [ equipmentTrainingQuizResult ] ) ;
133+ const events = await initalisedGetAllEventsByType (
134+ 'EquipmentTrainingQuizResult'
135+ ) ;
136+ expect ( events ) . toHaveLength ( 1 ) ;
137+ expectStoredEvent ( events [ 0 ] , equipmentTrainingQuizResult ) ;
118138 } ) ;
119139 } ) ;
120140
@@ -128,15 +148,13 @@ describe('get all events', () => {
128148 await persistEvent ( nonMatchingEvent ) ;
129149 await persistEvent ( secondMatchingEvent ) ;
130150
131- expect (
132- await initalisedGetAllEventsByTypes (
133- 'MemberNumberLinkedToEmail' ,
134- 'EquipmentTrainingSheetRegistered'
135- )
136- ) . toStrictEqual ( [
137- firstMatchingEvent ,
138- secondMatchingEvent ,
139- ] ) ;
151+ const events = await initalisedGetAllEventsByTypes (
152+ 'MemberNumberLinkedToEmail' ,
153+ 'EquipmentTrainingSheetRegistered'
154+ ) ;
155+ expect ( events ) . toHaveLength ( 2 ) ;
156+ expectStoredEvent ( events [ 0 ] , firstMatchingEvent ) ;
157+ expectStoredEvent ( events [ 1 ] , secondMatchingEvent ) ;
140158 } ) ;
141159
142160 it ( 'returns EquipmentTrainingQuizResult events when one of the requested types matches' , async ( ) => {
@@ -149,15 +167,13 @@ describe('get all events', () => {
149167 await persistEvent ( matchingEvent ) ;
150168 await persistEvent ( nonMatchingEvent ) ;
151169
152- expect (
153- await initalisedGetAllEventsByTypes (
154- 'EquipmentTrainingQuizResult' ,
155- 'EquipmentTrainingSheetRegistered'
156- )
157- ) . toStrictEqual ( [
158- equipmentTrainingQuizResult ,
159- matchingEvent ,
160- ] ) ;
170+ const events = await initalisedGetAllEventsByTypes (
171+ 'EquipmentTrainingQuizResult' ,
172+ 'EquipmentTrainingSheetRegistered'
173+ ) ;
174+ expect ( events ) . toHaveLength ( 2 ) ;
175+ expectStoredEvent ( events [ 0 ] , equipmentTrainingQuizResult ) ;
176+ expectStoredEvent ( events [ 1 ] , matchingEvent ) ;
161177 } ) ;
162178 } ) ;
163179} ) ;
0 commit comments