1+ var chai = require ( 'chai' ) ;
2+ require ( '../src/continuous/CallbackHandlerEnricher.js' ) ;
3+ var projection = require ( 'esprojection-testing-framework' ) ;
4+ var testData = require ( './TestData.js' ) ;
5+
6+ describe ( 'Callback Handler Enricher Tests' , function ( )
7+ {
8+ beforeEach ( function ( ) { projection . initialize ( ) ; } ) ;
9+
10+ it ( 'Projection Can Handle Estate Events' ,
11+ function ( )
12+ {
13+ var estateId = '3bf2dab2-86d6-44e3-bcf8-51bec65cf8bc' ;
14+ var estateName = 'Demo Estate' ;
15+ var reference = "1" ;
16+
17+ var estateCreatedEvent = testData . getEstateCreatedEvent ( estateId , estateName ) ;
18+
19+ projection . processEvent (
20+ 'EstateAggregate-' + estateId . replace ( / - / gi, "" ) ,
21+ estateCreatedEvent . eventType ,
22+ estateCreatedEvent . data ) ;
23+
24+ var estateReferenceAllocatedEvent = testData . getEstateReferenceAllocatedEvent ( estateId , reference ) ;
25+ projection . processEvent (
26+ 'EstateAggregate-' + estateId . replace ( / - / gi, "" ) ,
27+ estateReferenceAllocatedEvent . eventType ,
28+ estateReferenceAllocatedEvent . data ) ;
29+
30+ var projectionState = projection . getState ( ) ;
31+
32+ chai . expect ( projectionState ) . to . not . be . null ;
33+ chai . expect ( projectionState . estates ) . to . not . be . null ;
34+ chai . expect ( projectionState . estates . length ) . to . equal ( 1 ) ;
35+ chai . expect ( projectionState . estates [ 0 ] . estateId ) . to . equal ( estateId ) ;
36+ chai . expect ( projectionState . estates [ 0 ] . reference ) . to . equal ( reference ) ;
37+ }
38+ ) ;
39+
40+ it ( 'Projection Can Handle Callback Received Event after Estate Created' ,
41+ function ( ) {
42+ var estateId = '3bf2dab2-86d6-44e3-bcf8-51bec65cf8bc' ;
43+ var estateName = 'Demo Estate' ;
44+ var reference = "1" ;
45+
46+ var estateCreatedEvent = testData . getEstateCreatedEvent ( estateId , estateName ) ;
47+
48+ projection . processEvent (
49+ 'EstateAggregate-' + estateId . replace ( / - / gi, "" ) ,
50+ estateCreatedEvent . eventType ,
51+ estateCreatedEvent . data ) ;
52+
53+ var estateReferenceAllocatedEvent = testData . getEstateReferenceAllocatedEvent ( estateId , reference ) ;
54+ projection . processEvent (
55+ 'EstateAggregate-' + estateId . replace ( / - / gi, "" ) ,
56+ estateReferenceAllocatedEvent . eventType ,
57+ estateReferenceAllocatedEvent . data ) ;
58+
59+ var projectionState = projection . getState ( ) ;
60+
61+ chai . expect ( projectionState ) . to . not . be . null ;
62+ chai . expect ( projectionState . estates ) . to . not . be . null ;
63+ chai . expect ( projectionState . estates . length ) . to . equal ( 1 ) ;
64+
65+ var destination = "EstateManagement" ;
66+ var estateReference = "1" ;
67+ var merchantReference = "1" ;
68+ var callbackReceivedEvent = testData . getCallbackReceivedEvent ( destination , estateReference , merchantReference ) ;
69+
70+ projection . processEvent (
71+ "$et-CallbackReceivedEvent" ,
72+ callbackReceivedEvent . eventType ,
73+ callbackReceivedEvent . data ) ;
74+
75+ var events = projection . emittedEvents ;
76+ chai . expect ( events . length ) . to . equal ( 1 ) ;
77+
78+ var eventBody = JSON . parse ( events [ 0 ] . body ) ;
79+ chai . expect ( eventBody . estateId ) . to . equal ( estateId ) ;
80+ chai . expect ( events [ 0 ] . streamId ) . to . equal ( destination + "SubscriptionStream_" + estateName . replace ( " " , "" ) ) ;
81+ chai . expect ( events [ 0 ] . eventName ) . to . equal ( "CallbackReceivedEnrichedEvent" ) ;
82+ }
83+ ) ;
84+
85+ it ( 'Projection Can Handle Callback Received Event before Estate Created' ,
86+ function ( ) {
87+
88+ var destination = "EstateManagement" ;
89+ var estateReference = "1" ;
90+ var merchantReference = "1" ;
91+ var callbackReceivedEvent = testData . getCallbackReceivedEvent ( destination , estateReference , merchantReference ) ;
92+
93+ projection . processEvent (
94+ "$et-CallbackReceivedEvent" ,
95+ callbackReceivedEvent . eventType ,
96+ callbackReceivedEvent . data ) ;
97+
98+ var events = projection . emittedEvents ;
99+ chai . expect ( events . length ) . to . equal ( 1 ) ;
100+
101+ var eventBody = JSON . parse ( events [ 0 ] . body ) ;
102+ chai . expect ( eventBody . estateId ) . to . be . undefined ;
103+ chai . expect ( events [ 0 ] . streamId ) . to . equal ( destination + "SubscriptionStream_UnknownEstate" ) ;
104+ chai . expect ( events [ 0 ] . eventName ) . to . equal ( "CallbackReceivedEnrichedWithNoEstateEvent" ) ;
105+ }
106+ ) ;
107+ } ) ;
0 commit comments