CacheControl / CacheControl/json-rules-engine
allowUndefinedFacts not working when the facts type are string
- Dominant language
- JavaScript
- Stars
- 3.1k
- Forks
- 507
- PR merge metrics
- No merged PRs in 30d
Description
Here's my example, you can reproduce the issue with the code:
`const customAttributeRule = {
"name": "allowUndefinedFacts-test",
"attributes": [
{
"name": "Astring",
"type": "string"
},
{
"name": "Bnumber",
"type": "number"
}
],
"decisions": [
{
"conditions": {
"all": [
{
"fact": "Astring",
"operator": "notEqual",
"value": "string"
}
]
},
"event": {
"type": "Astring",
"params": {
"value": "1",
"description": "Astring test"
}
}
},
{
"conditions": {
"all": [
{
"fact": "Bnumber",
"operator": "lessThan",
"value": 5
}
]
},
"event": {
"type": "Bnumber",
"params": {
"value": "1",
"description": "Bnumber test"
}
}
}
]
}`
`let facts = {}`
`const engine = new Engine(customAttributeRule.decisions, {allowUndefinedFacts: true});
engine.on('success', event => {
console.log(event)
});`
`let result = engine .run(facts)`
The engine output is
`{
type: 'Astring',
params: { value: '1', description: 'Astring test' }
}`
However, the allowUndefinedFacts works when then fact type is number
Since the engine treat undefined facts as undefined, so I added another condition that `{
"fact": "Astring",
"operator": "notEqual",
"value": "undefined"
}`, but it still does not work as expected
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by running the provided reproduction with Engine.run, an empty facts object, and allowUndefinedFacts enabled, then trace how the notEqual operator handles the undefined Astring fact versus the numeric Bnumber fact. Done means the option behaves consistently for both fact types and the reproduction produces the documented expected result.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100