@@ -87,37 +87,54 @@ describe('Engine: event', () => {
87
87
it ( '"success" passes the event, almanac, and results' , async ( ) => {
88
88
const failureSpy = sandbox . spy ( )
89
89
const successSpy = sandbox . spy ( )
90
- engine . on ( 'success' , function ( e , almanac , ruleResult ) {
91
- expect ( e ) . to . eql ( event )
92
- expect ( almanac ) . to . be . an . instanceof ( Almanac )
90
+ function assertResult ( ruleResult ) {
93
91
expect ( ruleResult . result ) . to . be . true ( )
94
92
expect ( ruleResult . conditions . any [ 0 ] . result ) . to . be . true ( )
95
93
expect ( ruleResult . conditions . any [ 0 ] . factResult ) . to . equal ( 21 )
96
94
expect ( ruleResult . conditions . any [ 1 ] . result ) . to . be . false ( )
97
95
expect ( ruleResult . conditions . any [ 1 ] . factResult ) . to . equal ( false )
96
+ }
97
+ engine . on ( 'success' , function ( e , almanac , ruleResult ) {
98
+ expect ( e ) . to . eql ( event )
99
+ expect ( almanac ) . to . be . an . instanceof ( Almanac )
100
+ assertResult ( ruleResult )
98
101
successSpy ( )
99
102
} )
100
103
engine . on ( 'failure' , failureSpy )
101
- await engine . run ( )
104
+
105
+ const { successResults, failureResults } = await engine . run ( )
106
+
107
+ expect ( failureResults ) . to . have . lengthOf ( 0 )
108
+ expect ( successResults ) . to . have . lengthOf ( 1 )
109
+ assertResult ( successResults [ 0 ] )
102
110
expect ( failureSpy . callCount ) . to . equal ( 0 )
103
111
expect ( successSpy . callCount ) . to . equal ( 1 )
104
112
} )
105
113
106
114
it ( '"event.type" passes the event parameters, almanac, and results' , async ( ) => {
107
115
const failureSpy = sandbox . spy ( )
108
116
const successSpy = sandbox . spy ( )
109
- engine . on ( event . type , function ( params , almanac , ruleResult ) {
110
- expect ( params ) . to . eql ( event . params )
111
- expect ( almanac ) . to . be . an . instanceof ( Almanac )
117
+ function assertResult ( ruleResult ) {
112
118
expect ( ruleResult . result ) . to . be . true ( )
113
119
expect ( ruleResult . conditions . any [ 0 ] . result ) . to . be . true ( )
114
120
expect ( ruleResult . conditions . any [ 0 ] . factResult ) . to . equal ( 21 )
115
121
expect ( ruleResult . conditions . any [ 1 ] . result ) . to . be . false ( )
116
122
expect ( ruleResult . conditions . any [ 1 ] . factResult ) . to . equal ( false )
123
+ }
124
+ engine . on ( event . type , function ( params , almanac , ruleResult ) {
125
+ expect ( params ) . to . eql ( event . params )
126
+ expect ( almanac ) . to . be . an . instanceof ( Almanac )
127
+ assertResult ( ruleResult )
117
128
successSpy ( )
118
129
} )
119
130
engine . on ( 'failure' , failureSpy )
120
- await engine . run ( )
131
+
132
+ const { successResults, failureResults } = await engine . run ( )
133
+
134
+ expect ( failureResults ) . to . have . lengthOf ( 0 )
135
+ expect ( successResults ) . to . have . lengthOf ( 1 )
136
+ assertResult ( successResults [ 0 ] )
137
+
121
138
expect ( failureSpy . callCount ) . to . equal ( 0 )
122
139
expect ( successSpy . callCount ) . to . equal ( 1 )
123
140
} )
@@ -126,19 +143,29 @@ describe('Engine: event', () => {
126
143
const AGE = 10
127
144
const failureSpy = sandbox . spy ( )
128
145
const successSpy = sandbox . spy ( )
129
- engine . on ( 'failure' , function ( e , almanac , ruleResult ) {
130
- expect ( e ) . to . eql ( event )
131
- expect ( almanac ) . to . be . an . instanceof ( Almanac )
146
+ function assertResult ( ruleResult ) {
132
147
expect ( ruleResult . result ) . to . be . false ( )
133
148
expect ( ruleResult . conditions . any [ 0 ] . result ) . to . be . false ( )
134
149
expect ( ruleResult . conditions . any [ 0 ] . factResult ) . to . equal ( AGE )
135
150
expect ( ruleResult . conditions . any [ 1 ] . result ) . to . be . false ( )
136
151
expect ( ruleResult . conditions . any [ 1 ] . factResult ) . to . equal ( false )
152
+ }
153
+
154
+ engine . on ( 'failure' , function ( e , almanac , ruleResult ) {
155
+ expect ( e ) . to . eql ( event )
156
+ expect ( almanac ) . to . be . an . instanceof ( Almanac )
157
+ assertResult ( ruleResult )
137
158
failureSpy ( )
138
159
} )
139
160
engine . on ( 'success' , successSpy )
140
161
engine . addFact ( 'age' , AGE ) // age fails
141
- await engine . run ( )
162
+
163
+ const { successResults, failureResults } = await engine . run ( )
164
+
165
+ expect ( failureResults ) . to . have . lengthOf ( 1 )
166
+ expect ( successResults ) . to . have . lengthOf ( 0 )
167
+ assertResult ( failureResults [ 0 ] )
168
+
142
169
expect ( failureSpy . callCount ) . to . equal ( 1 )
143
170
expect ( successSpy . callCount ) . to . equal ( 0 )
144
171
} )
@@ -186,9 +213,8 @@ describe('Engine: event', () => {
186
213
it ( '"success" passes the event, almanac, and results' , async ( ) => {
187
214
const failureSpy = sandbox . spy ( )
188
215
const successSpy = sandbox . spy ( )
189
- engine . on ( 'success' , function ( e , almanac , ruleResult ) {
190
- expect ( e ) . to . eql ( event )
191
- expect ( almanac ) . to . be . an . instanceof ( Almanac )
216
+
217
+ function assertResult ( ruleResult ) {
192
218
expect ( ruleResult . result ) . to . be . true ( )
193
219
expect ( ruleResult . conditions . any [ 0 ] . result ) . to . be . false ( )
194
220
expect ( ruleResult . conditions . any [ 0 ] . factResult ) . to . equal ( 10 )
@@ -199,10 +225,21 @@ describe('Engine: event', () => {
199
225
expect ( ruleResult . conditions . any [ 2 ] . all [ 0 ] . factResult ) . to . equal ( 80403 )
200
226
expect ( ruleResult . conditions . any [ 2 ] . all [ 1 ] . result ) . to . be . true ( )
201
227
expect ( ruleResult . conditions . any [ 2 ] . all [ 1 ] . factResult ) . to . equal ( 'male' )
228
+ }
229
+
230
+ engine . on ( 'success' , function ( e , almanac , ruleResult ) {
231
+ expect ( e ) . to . eql ( event )
232
+ expect ( almanac ) . to . be . an . instanceof ( Almanac )
233
+ assertResult ( ruleResult )
202
234
successSpy ( )
203
235
} )
204
236
engine . on ( 'failure' , failureSpy )
205
- await engine . run ( )
237
+
238
+ const { successResults, failureResults } = await engine . run ( )
239
+
240
+ assertResult ( successResults [ 0 ] )
241
+ expect ( failureResults ) . to . have . lengthOf ( 0 )
242
+ expect ( successResults ) . to . have . lengthOf ( 1 )
206
243
expect ( failureSpy . callCount ) . to . equal ( 0 )
207
244
expect ( successSpy . callCount ) . to . equal ( 1 )
208
245
} )
@@ -212,9 +249,7 @@ describe('Engine: event', () => {
212
249
const GENDER = 'female'
213
250
const failureSpy = sandbox . spy ( )
214
251
const successSpy = sandbox . spy ( )
215
- engine . on ( 'failure' , function ( e , almanac , ruleResult ) {
216
- expect ( e ) . to . eql ( event )
217
- expect ( almanac ) . to . be . an . instanceof ( Almanac )
252
+ function assertResult ( ruleResult ) {
218
253
expect ( ruleResult . result ) . to . be . false ( )
219
254
expect ( ruleResult . conditions . any [ 0 ] . result ) . to . be . false ( )
220
255
expect ( ruleResult . conditions . any [ 0 ] . factResult ) . to . equal ( 10 )
@@ -225,12 +260,23 @@ describe('Engine: event', () => {
225
260
expect ( ruleResult . conditions . any [ 2 ] . all [ 0 ] . factResult ) . to . equal ( ZIP_CODE )
226
261
expect ( ruleResult . conditions . any [ 2 ] . all [ 1 ] . result ) . to . be . false ( )
227
262
expect ( ruleResult . conditions . any [ 2 ] . all [ 1 ] . factResult ) . to . equal ( GENDER )
263
+ }
264
+ engine . on ( 'failure' , function ( e , almanac , ruleResult ) {
265
+ expect ( e ) . to . eql ( event )
266
+ expect ( almanac ) . to . be . an . instanceof ( Almanac )
267
+ assertResult ( ruleResult )
228
268
failureSpy ( )
229
269
} )
230
270
engine . on ( 'success' , successSpy )
231
271
engine . addFact ( 'zipCode' , ZIP_CODE ) // zipCode fails
232
272
engine . addFact ( 'gender' , GENDER ) // gender fails
233
- await engine . run ( )
273
+
274
+ const { successResults, failureResults } = await engine . run ( )
275
+
276
+ assertResult ( failureResults [ 0 ] )
277
+ expect ( failureResults ) . to . have . lengthOf ( 1 )
278
+ expect ( successResults ) . to . have . lengthOf ( 0 )
279
+
234
280
expect ( failureSpy . callCount ) . to . equal ( 1 )
235
281
expect ( successSpy . callCount ) . to . equal ( 0 )
236
282
} )
@@ -262,19 +308,29 @@ describe('Engine: event', () => {
262
308
const failureSpy = sandbox . spy ( )
263
309
const successSpy = sandbox . spy ( )
264
310
const rule = engine . rules [ 0 ]
265
- rule . on ( 'success' , function ( e , almanac , ruleResult ) {
266
- expect ( e ) . to . eql ( event )
267
- expect ( almanac ) . to . be . an . instanceof ( Almanac )
268
- expect ( failureSpy . callCount ) . to . equal ( 0 )
311
+ function assertResult ( ruleResult ) {
269
312
expect ( ruleResult . result ) . to . be . true ( )
270
313
expect ( ruleResult . conditions . any [ 0 ] . result ) . to . be . true ( )
271
314
expect ( ruleResult . conditions . any [ 0 ] . factResult ) . to . equal ( 21 )
272
315
expect ( ruleResult . conditions . any [ 1 ] . result ) . to . be . false ( )
273
316
expect ( ruleResult . conditions . any [ 1 ] . factResult ) . to . equal ( false )
317
+ }
318
+
319
+ rule . on ( 'success' , function ( e , almanac , ruleResult ) {
320
+ expect ( e ) . to . eql ( event )
321
+ expect ( almanac ) . to . be . an . instanceof ( Almanac )
322
+ expect ( failureSpy . callCount ) . to . equal ( 0 )
323
+ assertResult ( ruleResult )
274
324
successSpy ( )
275
325
} )
276
326
rule . on ( 'failure' , failureSpy )
277
- await engine . run ( )
327
+
328
+ const { successResults, failureResults } = await engine . run ( )
329
+
330
+ assertResult ( successResults [ 0 ] )
331
+ expect ( failureResults ) . to . have . lengthOf ( 0 )
332
+ expect ( successResults ) . to . have . lengthOf ( 1 )
333
+
278
334
expect ( successSpy . callCount ) . to . equal ( 1 )
279
335
expect ( failureSpy . callCount ) . to . equal ( 0 )
280
336
} )
@@ -284,21 +340,28 @@ describe('Engine: event', () => {
284
340
const successSpy = sandbox . spy ( )
285
341
const failureSpy = sandbox . spy ( )
286
342
const rule = engine . rules [ 0 ]
287
- rule . on ( 'failure' , function ( e , almanac , ruleResult ) {
288
- expect ( e ) . to . eql ( event )
289
- expect ( almanac ) . to . be . an . instanceof ( Almanac )
290
- expect ( successSpy . callCount ) . to . equal ( 0 )
343
+ function assertResult ( ruleResult ) {
291
344
expect ( ruleResult . result ) . to . be . false ( )
292
345
expect ( ruleResult . conditions . any [ 0 ] . result ) . to . be . false ( )
293
346
expect ( ruleResult . conditions . any [ 0 ] . factResult ) . to . equal ( AGE )
294
347
expect ( ruleResult . conditions . any [ 1 ] . result ) . to . be . false ( )
295
348
expect ( ruleResult . conditions . any [ 1 ] . factResult ) . to . equal ( false )
349
+ }
350
+ rule . on ( 'failure' , function ( e , almanac , ruleResult ) {
351
+ expect ( e ) . to . eql ( event )
352
+ expect ( almanac ) . to . be . an . instanceof ( Almanac )
353
+ expect ( successSpy . callCount ) . to . equal ( 0 )
354
+ assertResult ( ruleResult )
296
355
failureSpy ( )
297
356
} )
298
357
rule . on ( 'success' , successSpy )
299
358
// both conditions will fail
300
359
engine . addFact ( 'age' , AGE )
301
- await engine . run ( )
360
+ const { successResults, failureResults } = await engine . run ( )
361
+
362
+ assertResult ( failureResults [ 0 ] )
363
+ expect ( failureResults ) . to . have . lengthOf ( 1 )
364
+ expect ( successResults ) . to . have . lengthOf ( 0 )
302
365
expect ( failureSpy . callCount ) . to . equal ( 1 )
303
366
expect ( successSpy . callCount ) . to . equal ( 0 )
304
367
} )
0 commit comments