Skip to content

Commit 7740f33

Browse files
authored
Merge pull request #420 from emilefokkemanavara/issue/419/rule-conditions-readonly
Make Rule.conditions readonly (fixes #419)
2 parents 0a01da6 + 100a0fd commit 7740f33

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

test/engine.test.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ describe('Engine', () => {
9393
expect(engine.rules[0].conditions.all.length).to.equal(2)
9494
expect(engine.rules[1].conditions.all.length).to.equal(2)
9595

96-
rule1.conditions = { all: [] }
96+
rule1.setConditions({ all: [] })
9797
engine.updateRule(rule1)
9898

9999
rule1 = engine.rules.find(rule => rule.name === 'rule1')
@@ -102,6 +102,20 @@ describe('Engine', () => {
102102
expect(rule2.conditions.all.length).to.equal(2)
103103
})
104104

105+
it('updates rule incorrectly', async () => {
106+
const rule1 = new Rule(factories.rule({ name: 'rule1' }))
107+
engine.addRule(rule1)
108+
109+
rule1.conditions = { all: [] } // Rule.conditions should not be set to a value that is not an instance of Condition
110+
engine.updateRule(rule1)
111+
112+
const successSpy = sandbox.spy()
113+
rule1.on('success', successSpy)
114+
await engine.run()
115+
const ruleResult = successSpy.getCall(0).args[2]
116+
expect(() => JSON.stringify(ruleResult)).to.throw(/toJSON is not a function/)
117+
})
118+
105119
it('should throw error if rule not found', () => {
106120
const rule1 = new Rule(factories.rule({ name: 'rule1' }))
107121
engine.addRule(rule1)

types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ export interface RuleResult {
174174
export class Rule implements RuleProperties {
175175
constructor(ruleProps: RuleProperties | string);
176176
name: string;
177-
conditions: TopLevelCondition;
177+
readonly conditions: TopLevelCondition;
178178
/**
179179
* @deprecated Use {@link Rule.event} instead.
180180
*/

0 commit comments

Comments
 (0)