1
1
var RuleEngine = require ( '../index' ) ;
2
- var expect = require ( "chai" ) . expect ;
3
2
describe ( "Rules" , function ( ) {
4
3
describe ( ".init()" , function ( ) {
5
4
it ( "should empty the existing rule array" , function ( ) {
@@ -13,7 +12,7 @@ describe("Rules", function() {
13
12
} ] ;
14
13
var R = new RuleEngine ( rules ) ;
15
14
R . init ( ) ;
16
- expect ( R . rules ) . to . eql ( [ ] ) ;
15
+ expect ( R . rules ) . toEqual ( [ ] ) ;
17
16
} ) ;
18
17
} ) ;
19
18
describe ( ".register()" , function ( ) {
@@ -27,7 +26,7 @@ describe("Rules", function() {
27
26
}
28
27
} ] ;
29
28
var R = new RuleEngine ( rules ) ;
30
- expect ( R . rules [ 0 ] . on ) . to . eql ( true ) ;
29
+ expect ( R . rules [ 0 ] . on ) . toEqual ( true ) ;
31
30
} ) ;
32
31
it ( "Rule can be passed to register as both arrays and individual objects" , function ( ) {
33
32
var rule = {
@@ -40,7 +39,7 @@ describe("Rules", function() {
40
39
} ;
41
40
var R1 = new RuleEngine ( rule ) ;
42
41
var R2 = new RuleEngine ( [ rule ] ) ;
43
- expect ( R1 . rules ) . to . eql ( R2 . rules ) ;
42
+ expect ( R1 . rules ) . toEqual ( R2 . rules ) ;
44
43
} ) ;
45
44
it ( "Rules can be appended multiple times via register after creating rule engine instance" , function ( ) {
46
45
var rules = [ {
@@ -62,9 +61,9 @@ describe("Rules", function() {
62
61
var R2 = new RuleEngine ( rules [ 0 ] ) ;
63
62
var R3 = new RuleEngine ( ) ;
64
63
R2 . register ( rules [ 1 ] ) ;
65
- expect ( R1 . rules ) . to . eql ( R2 . rules ) ;
64
+ expect ( R1 . rules ) . toEqual ( R2 . rules ) ;
66
65
R3 . register ( rules ) ;
67
- expect ( R1 . rules ) . to . eql ( R3 . rules ) ;
66
+ expect ( R1 . rules ) . toEqual ( R3 . rules ) ;
68
67
} ) ;
69
68
} ) ;
70
69
describe ( ".sync()" , function ( ) {
@@ -90,7 +89,7 @@ describe("Rules", function() {
90
89
} ] ;
91
90
var R = new RuleEngine ( ) ;
92
91
R . register ( rules ) ;
93
- expect ( R . activeRules ) . not . to . eql ( R . rules ) ;
92
+ expect ( R . activeRules ) . not . toEqual ( R . rules ) ;
94
93
} ) ;
95
94
it ( "should sort the rules accroding to priority, if priority is present" , function ( ) {
96
95
var rules = [ {
@@ -123,7 +122,7 @@ describe("Rules", function() {
123
122
} ] ;
124
123
var R = new RuleEngine ( ) ;
125
124
R . register ( rules ) ;
126
- expect ( R . activeRules [ 2 ] . index ) . to . eql ( 2 ) ;
125
+ expect ( R . activeRules [ 2 ] . index ) . toEqual ( 2 ) ;
127
126
} ) ;
128
127
} ) ;
129
128
describe ( ".exec()" , function ( ) {
@@ -141,7 +140,7 @@ describe("Rules", function() {
141
140
R . execute ( {
142
141
"transactionTotal" : 200
143
142
} , function ( result ) {
144
- expect ( result . result ) . to . eql ( false ) ;
143
+ expect ( result . result ) . toEqual ( false ) ;
145
144
} ) ;
146
145
} ) ;
147
146
it ( "should chain rules and find result with next()" , function ( ) {
@@ -168,7 +167,7 @@ describe("Rules", function() {
168
167
"transactionTotal" : 200 ,
169
168
"card" : "VISA"
170
169
} , function ( result ) {
171
- expect ( result . result ) . to . eql ( "Custom Result" ) ;
170
+ expect ( result . result ) . toEqual ( "Custom Result" ) ;
172
171
} ) ;
173
172
} ) ;
174
173
it ( "should provide access to rule definition properties via rule()" , function ( ) {
@@ -189,8 +188,8 @@ describe("Rules", function() {
189
188
R . execute ( {
190
189
"input" : true
191
190
} , function ( result ) {
192
- expect ( result . ruleName ) . to . eql ( rule . name ) ;
193
- expect ( result . ruleID ) . to . eql ( rule . id ) ;
191
+ expect ( result . ruleName ) . toEqual ( rule . name ) ;
192
+ expect ( result . ruleID ) . toEqual ( rule . id ) ;
194
193
} ) ;
195
194
} ) ;
196
195
it ( "should include the matched rule path" , function ( ) {
@@ -246,7 +245,7 @@ describe("Rules", function() {
246
245
"x" : true ,
247
246
"y" : false
248
247
} , function ( result ) {
249
- expect ( result . matchPath ) . to . eql ( [ rules [ 0 ] . name , rules [ 2 ] . id , lastMatch ] ) ;
248
+ expect ( result . matchPath ) . toEqual ( [ rules [ 0 ] . name , rules [ 2 ] . id , lastMatch ] ) ;
250
249
} ) ;
251
250
} ) ;
252
251
@@ -264,7 +263,7 @@ describe("Rules", function() {
264
263
R . execute ( {
265
264
"transactionTotal" : 200
266
265
} , function ( result ) {
267
- expect ( result . result ) . to . eql ( false ) ;
266
+ expect ( result . result ) . toEqual ( false ) ;
268
267
} ) ;
269
268
} ) ;
270
269
@@ -284,7 +283,7 @@ describe("Rules", function() {
284
283
R . execute ( {
285
284
"transactionTotal" : 200
286
285
} , function ( result ) {
287
- expect ( result . result ) . to . eql ( false ) ;
286
+ expect ( result . result ) . toEqual ( false ) ;
288
287
} ) ;
289
288
} ) ;
290
289
@@ -311,21 +310,21 @@ describe("Rules", function() {
311
310
it ( "find selector function for rules should exact number of matches" , function ( ) {
312
311
expect ( R . findRules ( {
313
312
"id" : "one"
314
- } ) . length ) . to . eql ( 1 ) ;
313
+ } ) . length ) . toEqual ( 1 ) ;
315
314
} ) ;
316
315
it ( "find selector function for rules should give the correct match as result" , function ( ) {
317
316
expect ( R . findRules ( {
318
317
"id" : "one"
319
- } ) [ 0 ] . id ) . to . eql ( "one" ) ;
318
+ } ) [ 0 ] . id ) . toEqual ( "one" ) ;
320
319
} ) ;
321
320
it ( "find selector function should filter off undefined entries in the query if any" , function ( ) {
322
321
expect ( R . findRules ( {
323
322
"id" : "one" ,
324
323
"myMistake" : undefined
325
- } ) [ 0 ] . id ) . to . eql ( "one" ) ;
324
+ } ) [ 0 ] . id ) . toEqual ( "one" ) ;
326
325
} ) ;
327
326
it ( "find without condition works fine" , function ( ) {
328
- expect ( R . findRules ( ) . length ) . to . eql ( 2 ) ;
327
+ expect ( R . findRules ( ) . length ) . toEqual ( 2 ) ;
329
328
} ) ;
330
329
} ) ;
331
330
describe ( ".turn()" , function ( ) {
@@ -354,15 +353,15 @@ describe("Rules", function() {
354
353
} ) ;
355
354
expect ( R . findRules ( {
356
355
"id" : "one"
357
- } ) [ 0 ] . on ) . to . eql ( false ) ;
356
+ } ) [ 0 ] . on ) . toEqual ( false ) ;
358
357
} ) ;
359
358
it ( "checking whether turn on rules work as expected" , function ( ) {
360
359
R . turn ( "ON" , {
361
360
"id" : "two"
362
361
} ) ;
363
362
expect ( R . findRules ( {
364
363
"id" : "two"
365
- } ) [ 0 ] . on ) . to . eql ( true ) ;
364
+ } ) [ 0 ] . on ) . toEqual ( true ) ;
366
365
} ) ;
367
366
} ) ;
368
367
describe ( ".prioritize()" , function ( ) {
@@ -401,13 +400,13 @@ describe("Rules", function() {
401
400
} ) ;
402
401
expect ( R . findRules ( {
403
402
"id" : "one"
404
- } ) [ 0 ] . priority ) . to . eql ( 10 ) ;
403
+ } ) [ 0 ] . priority ) . toEqual ( 10 ) ;
405
404
} ) ;
406
405
it ( "checking whether rules reorder after prioritize" , function ( ) {
407
406
R . prioritize ( 10 , {
408
407
"id" : "one"
409
408
} ) ;
410
- expect ( R . activeRules [ 0 ] . id ) . to . eql ( "one" ) ;
409
+ expect ( R . activeRules [ 0 ] . id ) . toEqual ( "one" ) ;
411
410
} ) ;
412
411
} ) ;
413
412
describe ( "ignoreFactChanges" , function ( ) {
@@ -432,7 +431,7 @@ describe("Rules", function() {
432
431
var R = new RuleEngine ( rules , { ignoreFactChanges : true } ) ;
433
432
434
433
R . execute ( fact , function ( result ) {
435
- expect ( result . errors ) . to . have . length ( 1 ) ;
434
+ expect ( result . errors ) . toHaveLength ( 1 ) ;
436
435
done ( ) ;
437
436
} ) ;
438
437
} ) ;
@@ -444,11 +443,9 @@ describe("Rules", function() {
444
443
"priority" : 4 ,
445
444
"on" : true ,
446
445
"condition" : function ( R ) {
447
- console . log ( `Executing rule 1 on ${ this . name } ` ) ;
448
446
R . when ( this . userCredibility && this . userCredibility > 5 ) ;
449
447
} ,
450
448
"consequence" : function ( R ) {
451
- console . log ( `Rule 1 matched for ${ this . name } user credibility is more, then avoid further check. Accepting payment.` ) ;
452
449
this . result = true ;
453
450
R . stop ( ) ;
454
451
}
@@ -457,11 +454,9 @@ describe("Rules", function() {
457
454
"name" : "block guest payment above 10000" ,
458
455
"priority" : 3 ,
459
456
"condition" : function ( R ) {
460
- console . log ( `Executing rule 2 on ${ this . name } ` ) ;
461
457
R . when ( this . customerType && this . transactionTotal > 10000 && this . customerType == "guest" ) ;
462
458
} ,
463
459
"consequence" : function ( R ) {
464
- console . log ( `Rule 2 matched for ${ this . name } reject if above 10000 and customer type is guest. Rejecting payment.` ) ;
465
460
this . result = false ;
466
461
R . stop ( ) ;
467
462
}
@@ -470,12 +465,9 @@ describe("Rules", function() {
470
465
"name" : "is customer guest?" ,
471
466
"priority" : 2 ,
472
467
"condition" : function ( R ) {
473
- console . log ( `Executing rule 3 on ${ this . name } ` ) ;
474
468
R . when ( ! this . userLoggedIn ) ;
475
469
} ,
476
470
"consequence" : function ( R ) {
477
- console . log ( `Rule 3 matched for ${ this . name } support rule written for blocking payment above 10000 from guests.` ) ;
478
- console . log ( "Process left to chain with rule 2." ) ;
479
471
this . customerType = "guest" ;
480
472
// the fact has been altered above, so all rules will run again since ignoreFactChanges is not set.
481
473
R . next ( ) ;
@@ -485,11 +477,9 @@ describe("Rules", function() {
485
477
"name" : "block Cashcard Payment" ,
486
478
"priority" : 1 ,
487
479
"condition" : function ( R ) {
488
- console . log ( `Executing rule 4 on ${ this . name } ` ) ;
489
480
R . when ( this . cardType == "Cash Card" ) ;
490
481
} ,
491
482
"consequence" : function ( R ) {
492
- console . log ( `Rule 4 matched for ${ this . name } reject the payment if cash card. Rejecting payment.` ) ;
493
483
this . result = false ;
494
484
R . stop ( ) ;
495
485
}
@@ -518,7 +508,7 @@ describe("Rules", function() {
518
508
var isStraightFactFast = false ;
519
509
520
510
R . execute ( chainedFact , function ( result ) {
521
- expect ( isStraightFactFast ) . eql ( true ) ;
511
+ expect ( isStraightFactFast ) . toBe ( true ) ;
522
512
done ( ) ;
523
513
} ) ;
524
514
@@ -528,4 +518,4 @@ describe("Rules", function() {
528
518
529
519
} ) ;
530
520
} ) ;
531
- } ) ;
521
+ } ) ;
0 commit comments