@@ -20,6 +20,10 @@ describe('Engine: event', () => {
20
20
canOrderDrinks : true
21
21
}
22
22
}
23
+
24
+ const awesomeEvent = {
25
+ type : 'awesome'
26
+ }
23
27
/**
24
28
* sets up a simple 'any' rule with 2 conditions
25
29
*/
@@ -92,6 +96,26 @@ describe('Engine: event', () => {
92
96
engine . addFact ( 'gender' , 'male' ) // gender succeeds
93
97
}
94
98
99
+ function setupWithConditionReference ( ) {
100
+ const conditionName = 'awesomeCondition'
101
+ const conditions = {
102
+ any : [ { condition : conditionName } ]
103
+ }
104
+ engine = engineFactory ( )
105
+ const ruleOptions = { conditions, event : awesomeEvent , priority : 100 }
106
+ const rule = factories . rule ( ruleOptions )
107
+ engine . addRule ( rule )
108
+ engine . setCondition ( conditionName , {
109
+ all : [ {
110
+ name : 'over 21' ,
111
+ fact : 'age' ,
112
+ operator : 'greaterThanInclusive' ,
113
+ value : 21
114
+ } ]
115
+ } )
116
+ engine . addFact ( 'age' , 21 )
117
+ }
118
+
95
119
context ( 'engine events: simple' , ( ) => {
96
120
beforeEach ( ( ) => simpleSetup ( ) )
97
121
@@ -602,4 +626,13 @@ describe('Engine: event', () => {
602
626
expect ( JSON . stringify ( ruleResult ) ) . to . equal ( expected )
603
627
} )
604
628
} )
629
+
630
+ context ( 'rule events: json serializing with condition reference' , ( ) => {
631
+ beforeEach ( ( ) => setupWithConditionReference ( ) )
632
+ it ( 'serializes properties' , async ( ) => {
633
+ const { results : [ ruleResult ] } = await engine . run ( )
634
+ const expected = '{"conditions":{"priority":1,"any":[{"priority":1,"all":[{"name":"over 21","operator":"greaterThanInclusive","value":21,"fact":"age","factResult":21,"result":true}]}]},"event":{"type":"awesome"},"priority":100,"result":true}'
635
+ expect ( JSON . stringify ( ruleResult ) ) . to . equal ( expected )
636
+ } )
637
+ } )
605
638
} )
0 commit comments