@@ -18,6 +18,7 @@ import {
1818import { arbitraryActor , getRightOrFail } from '../../helpers' ;
1919import { UUID } from 'io-ts-types' ;
2020import { EventName } from '../../../src/types/domain-event' ;
21+ import { excludeEvent } from '../../../src/init-dependencies/event-store/exclude-event' ;
2122
2223const arbitraryMemberNumberLinkedToEmailEvent = ( ) =>
2324 constructEvent ( 'MemberNumberLinkedToEmail' ) ( {
@@ -51,6 +52,7 @@ describe('get all events', () => {
5152
5253 let dbClient : libsqlClient . Client ;
5354 let persistEvent : ( event : DomainEvent ) => Promise < void > ;
55+ let unPersistEvent : ( event_id : string , reverted_by_number : number , revert_reason : string ) => Promise < void > ;
5456 let initalisedGetAllEvents : ( ) => Promise < ReadonlyArray < DomainEvent > > ;
5557 let initalisedGetAllEventsByType : ( type : EventName ) => Promise < ReadonlyArray < DomainEvent > > ;
5658 let initalisedGetAllEventsByTypes : ( type1 : EventName , type2 : EventName ) => Promise < ReadonlyArray < DomainEvent > > ;
@@ -67,6 +69,15 @@ describe('get all events', () => {
6769 ) ( arbitraryResource ( ) , 'no-such-resource' ) ( event ) ( )
6870 )
6971 } ;
72+ unPersistEvent = async (
73+ event_id : string , reverted_by_number : number , revert_reason : string
74+ ) => {
75+ getRightOrFail (
76+ await excludeEvent (
77+ dbClient
78+ ) ( event_id , reverted_by_number , revert_reason ) ( )
79+ )
80+ } ;
7081 initalisedGetAllEvents = async ( ) => getRightOrFail ( await getAllEvents ( dbClient ) ( ) ( ) ) ;
7182 initalisedGetAllEventsByType = async ( type : EventName ) => getRightOrFail ( await getAllEventsByType ( dbClient ) ( type ) ( ) ) ;
7283 initalisedGetAllEventsByTypes = async ( type1 : EventName , type2 : EventName ) => getRightOrFail ( await getAllEventsByTypes ( dbClient ) ( type1 , type2 ) ( ) ) ;
@@ -77,21 +88,35 @@ describe('get all events', () => {
7788 } ) ;
7889
7990 describe ( 'getAllEvents' , ( ) => {
80- it ( 'returns all persisted events except EquipmentTrainingQuizResult' , async ( ) => {
81- const memberNumberLinkedToEmail =
82- arbitraryMemberNumberLinkedToEmailEvent ( ) ;
83- const equipmentTrainingQuizResult =
84- arbitraryEquipmentTrainingQuizResultEvent ( ) ;
85- const equipmentTrainingSheetRegistered =
86- arbitraryEquipmentTrainingSheetRegisteredEvent ( ) ;
91+ const memberNumberLinkedToEmail = arbitraryMemberNumberLinkedToEmailEvent ( ) ;
92+ const equipmentTrainingQuizResult = arbitraryEquipmentTrainingQuizResultEvent ( ) ;
93+ const equipmentTrainingSheetRegistered = arbitraryEquipmentTrainingSheetRegisteredEvent ( ) ;
94+ beforeEach ( async ( ) => {
8795 await persistEvent ( memberNumberLinkedToEmail ) ;
8896 await persistEvent ( equipmentTrainingQuizResult ) ;
8997 await persistEvent ( equipmentTrainingSheetRegistered ) ;
98+ } ) ;
99+ it ( 'returns all persisted events except EquipmentTrainingQuizResult' , async ( ) => {
90100 expect ( await initalisedGetAllEvents ( ) ) . toStrictEqual ( [
91101 memberNumberLinkedToEmail ,
92102 equipmentTrainingSheetRegistered ,
93103 ] ) ;
94104 } ) ;
105+
106+ describe ( 'exclude an event' , ( ) => {
107+ const excludedBy : number = faker . number . int ( ) ;
108+ const excludedByReason : string = faker . company . catchPhrase ( ) ;
109+
110+ beforeEach ( async ( ) => {
111+ const eventId = ( await dbClient . execute ( 'SELECT id FROM events WHERE event_type = ?' , [ memberNumberLinkedToEmail . type ] ) ) . rows [ 0 ] [ 'id' ] ! as string ;
112+ await unPersistEvent ( eventId , excludedBy , excludedByReason )
113+ } ) ;
114+ it ( 'returns all persisted events except EquipmentTrainingQuizResult and the excluded event' , async ( ) => {
115+ expect ( await initalisedGetAllEvents ( ) ) . toStrictEqual ( [
116+ equipmentTrainingSheetRegistered ,
117+ ] ) ;
118+ } ) ;
119+ } ) ;
95120 } ) ;
96121
97122 describe ( 'getAllEventsByType' , ( ) => {
0 commit comments