Skip to content

Commit

Permalink
Rename successResults to results
Browse files Browse the repository at this point in the history
  • Loading branch information
Cache Hamm committed Dec 21, 2020
1 parent b3c083d commit f061af3
Show file tree
Hide file tree
Showing 16 changed files with 58 additions and 64 deletions.
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ let facts = {
// Run the engine to evaluate
engine
.run(facts)
.then(runResult => {
runResult.successResults.map(result => console.log(result.event.params.message))
.then(({ results }) => {
results.map(result => console.log(result.event.params.message))
})

/*
Expand Down Expand Up @@ -170,10 +170,9 @@ engine.addFact('account-information', function (params, almanac) {
let facts = { accountId: 'lincoln' }
engine
.run(facts)
.then((runResult) => {
console.log(facts.accountId + ' is a ' + runResult.successResults.map(result => result.event.params.message))
.then(({ results }) => {
console.log(facts.accountId + ' is a ' + results.map(result => result.event.params.message))
})
.catch(err => console.log(err.stack))

/*
* OUTPUT:
Expand Down
16 changes: 7 additions & 9 deletions docs/engine.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The Engine stores and executes rules, emits events, and maintains state.
* [engine.removeRule(Rule instance)](#engineremoverulerule-instance)
* [engine.addOperator(String operatorName, Function evaluateFunc(factValue, jsonValue))](#engineaddoperatorstring-operatorname-function-evaluatefuncfactvalue-jsonvalue)
* [engine.removeOperator(String operatorName)](#engineremoveoperatorstring-operatorname)
* [engine.run([Object facts], [Object options]) -> Promise ({ events: Events, almanac: Almanac, successResults: [], failureResults: []})](#enginerunobject-facts-object-options---promise--events-events-almanac-almanac-successresults--failureresults-)
* [engine.run([Object facts], [Object options]) -> Promise ({ events: Events, almanac: Almanac, results: [], failureResults: []})](#enginerunobject-facts-object-options---promise--events-events-almanac-almanac-successresults--failureresults-)
* [engine.stop() -> Engine](#enginestop---engine)
* [engine.on('success', Function(Object event, Almanac almanac, RuleResult ruleResult))](#engineonsuccess-functionobject-event-almanac-almanac-ruleresult-ruleresult)
* [engine.on('failure', Function(Object event, Almanac almanac, RuleResult ruleResult))](#engineonfailure-functionobject-event-almanac-almanac-ruleresult-ruleresult)
Expand Down Expand Up @@ -104,9 +104,6 @@ engine.addRule(rule)
engine.removeRule(rule)
```




### engine.addOperator(String operatorName, Function evaluateFunc(factValue, jsonValue))

Adds a custom operator to the engine. For situations that require going beyond the generic, built-in operators (`equal`, `greaterThan`, etc).
Expand Down Expand Up @@ -156,7 +153,7 @@ engine.removeOperator('startsWithLetter');



### engine.run([Object facts], [Object options]) -> Promise ({ events: Events, almanac: Almanac, successResults: [], failureResults: []})
### engine.run([Object facts], [Object options]) -> Promise ({ events: Events, almanac: Almanac, results: [], failureResults: []})

Runs the rules engine. Returns a promise which resolves when all rules have been run.

Expand All @@ -168,12 +165,13 @@ await engine.run()
await engine.run({ userId: 1 })

// results
const runResult = await engine.run({ userId: 1 })
const { results, failureResults, events } = await engine.run({ userId: 1 })

/**
* runResult.almanac: Almanac instance for the run
* runResult.successEvents: rule results for successful rules
* runResult.failureEvents: rule results for failed rules
* almanac: Almanac instance for the run
* results: rule results for successful rules
* failureResults: rule results for failed rules
* events: successful events
*/
```
Link to the [Almanac documentation](./almanac.md)
Expand Down
4 changes: 2 additions & 2 deletions docs/walkthrough.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,8 @@ Running an engine executes the rules, and fires off event events for conditions
engine.run({ userId: 1 }); // any time a rule condition requires 'userId', '1' will be returned

// run() returns a promise
engine.run({ userId: 4 }).then((results) => {
console.log('all rules executed; the following events were triggered: ', results.successResults.map(result => JSON.stringify(result.event)))
engine.run({ userId: 4 }).then(({ results }) => {
console.log('all rules executed; the following events were triggered: ', results.map(result => JSON.stringify(result.event)))
});
```
Helper methods (for this example)
Expand Down
6 changes: 3 additions & 3 deletions examples/01-hello-world.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
require('colors')
const { Engine } = require('json-rules-engine')

async function start() {
async function start () {
/**
* Setup a new engine
*/
Expand Down Expand Up @@ -47,9 +47,9 @@ async function start() {
const facts = { displayMessage: true }

// engine.run() evaluates the rule using the facts provided
const { successResults } = await engine.run(facts)
const { results } = await engine.run(facts)

successResults.map(result => console.log(result.event.params.data.green))
results.map(result => console.log(result.event.params.data.green))
}

start()
Expand Down
6 changes: 3 additions & 3 deletions examples/02-nested-boolean-logic.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
require('colors')
const { Engine } = require('json-rules-engine')

async function start() {
async function start () {
/**
* Setup a new engine
*/
Expand Down Expand Up @@ -61,9 +61,9 @@ async function start() {
gameDuration: 40
}

const { successResults } = await engine.run(facts)
const { results } = await engine.run(facts)

successResults.map(result => console.log(result.event.params.message.red))
results.map(result => console.log(result.event.params.message.red))
}
start()
/*
Expand Down
6 changes: 3 additions & 3 deletions examples/03-dynamic-facts.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const { Engine } = require('json-rules-engine')
// example client for making asynchronous requests to an api, database, etc
const apiClient = require('./support/account-api-client')

async function start() {
async function start () {
/**
* Setup a new engine
*/
Expand Down Expand Up @@ -70,9 +70,9 @@ async function start() {

// define fact(s) known at runtime
const facts = { accountId: 'lincoln' }
const { successResults } = await engine.run(facts)
const { results } = await engine.run(facts)

console.log(facts.accountId + ' is a ' + successResults.map(result => result.event.params.message))
console.log(facts.accountId + ' is a ' + results.map(result => result.event.params.message))
}
start()

Expand Down
8 changes: 3 additions & 5 deletions examples/04-fact-dependency.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ require('colors')
const { Engine } = require('json-rules-engine')
const accountClient = require('./support/account-api-client')

async function start() {
async function start () {
/**
* Setup a new engine
*/
Expand Down Expand Up @@ -108,11 +108,11 @@ async function start() {
})

// first run, using washington's facts
console.log('-- FIRST RUN --');
console.log('-- FIRST RUN --')
facts = { accountId: 'washington' }
await engine.run(facts)

console.log('-- SECOND RUN --');
console.log('-- SECOND RUN --')
// second run, using jefferson's facts; facts & evaluation are independent of the first run
facts = { accountId: 'jefferson' }
await engine.run(facts)
Expand All @@ -138,5 +138,3 @@ start()
* jefferson did NOT meet conditions for the microsoft-terminated-employees rule.
* jefferson DID meet conditions for the five-year-tenure rule.
*/


2 changes: 1 addition & 1 deletion examples/05-optimizing-runtime-with-fact-priorities.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ require('colors')
const { Engine } = require('json-rules-engine')
const accountClient = require('./support/account-api-client')

async function start() {
async function start () {
/**
* Setup a new engine
*/
Expand Down
4 changes: 2 additions & 2 deletions examples/06-custom-operators.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
require('colors')
const { Engine } = require('json-rules-engine')

async function start() {
async function start () {
/**
* Setup a new engine
*/
Expand Down Expand Up @@ -88,7 +88,7 @@ async function start() {
* Each run() of the engine executes on an independent set of facts. We'll run twice, once per word
*/

// first run, using 'bacon'
// first run, using 'bacon'
facts = { word: 'bacon' }
await engine.run(facts)

Expand Down
1 change: 0 additions & 1 deletion examples/07-rule-chaining.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ require('colors')
const { Engine } = require('json-rules-engine')
const { getAccountInformation } = require('./support/account-api-client')


async function start () {
/**
* Setup a new engine
Expand Down
2 changes: 1 addition & 1 deletion examples/08-fact-comparison.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
require('colors')
const { Engine } = require('json-rules-engine')

async function start() {
async function start () {
/**
* Setup a new engine
*/
Expand Down
2 changes: 1 addition & 1 deletion examples/09-rule-results.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
require('colors')
const { Engine } = require('json-rules-engine')

async function start() {
async function start () {
/**
* Setup a new engine
*/
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions src/engine.js
Original file line number Diff line number Diff line change
Expand Up @@ -234,14 +234,14 @@ class Engine extends EventEmitter {
return almanac.getSuccessEvents()
}).then(events => {
const ruleResults = almanac.getRuleResults()
const { successResults, failureResults } = ruleResults.reduce((hash, ruleResult) => {
const group = ruleResult.result ? 'successResults' : 'failureResults'
const { results, failureResults } = ruleResults.reduce((hash, ruleResult) => {
const group = ruleResult.result ? 'results' : 'failureResults'
hash[group].push(ruleResult)
return hash
}, { successResults: [], failureResults: [] })
}, { results: [], failureResults: [] })

resolve({
successResults,
results,
failureResults,
almanac,

Expand Down
8 changes: 4 additions & 4 deletions test/acceptance/acceptance.js
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,8 @@ describe('Acceptance', () => {
const engineResult = await engine.run({ baseIndex: 1 })

// results
expect(engineResult.successResults.length).to.equal(2)
expect(engineResult.successResults[0]).to.deep.equal({
expect(engineResult.results.length).to.equal(2)
expect(engineResult.results[0]).to.deep.equal({
conditions: {
all: [
{
Expand Down Expand Up @@ -189,7 +189,7 @@ describe('Acceptance', () => {
priority: 10,
result: true
})
expect(engineResult.successResults[1]).to.deep.equal({
expect(engineResult.results[1]).to.deep.equal({
conditions: {
all: [
{
Expand Down Expand Up @@ -242,7 +242,7 @@ describe('Acceptance', () => {

const engineResult = await engine.run({ baseIndex: 1, 'rule-created-fact': '' })

expect(engineResult.successResults.length).to.equal(0)
expect(engineResult.results.length).to.equal(0)
expect(engineResult.failureResults.length).to.equal(2)
expect(engineResult.failureResults.every(rr => rr.result === false)).to.be.true()

Expand Down
36 changes: 18 additions & 18 deletions test/engine-event.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,11 @@ describe('Engine: event', () => {
})
engine.on('failure', failureSpy)

const { successResults, failureResults } = await engine.run()
const { results, failureResults } = await engine.run()

expect(failureResults).to.have.lengthOf(0)
expect(successResults).to.have.lengthOf(1)
assertResult(successResults[0])
expect(results).to.have.lengthOf(1)
assertResult(results[0])
expect(failureSpy.callCount).to.equal(0)
expect(successSpy.callCount).to.equal(1)
})
Expand All @@ -129,11 +129,11 @@ describe('Engine: event', () => {
})
engine.on('failure', failureSpy)

const { successResults, failureResults } = await engine.run()
const { results, failureResults } = await engine.run()

expect(failureResults).to.have.lengthOf(0)
expect(successResults).to.have.lengthOf(1)
assertResult(successResults[0])
expect(results).to.have.lengthOf(1)
assertResult(results[0])

expect(failureSpy.callCount).to.equal(0)
expect(successSpy.callCount).to.equal(1)
Expand All @@ -160,10 +160,10 @@ describe('Engine: event', () => {
engine.on('success', successSpy)
engine.addFact('age', AGE) // age fails

const { successResults, failureResults } = await engine.run()
const { results, failureResults } = await engine.run()

expect(failureResults).to.have.lengthOf(1)
expect(successResults).to.have.lengthOf(0)
expect(results).to.have.lengthOf(0)
assertResult(failureResults[0])

expect(failureSpy.callCount).to.equal(1)
Expand Down Expand Up @@ -235,11 +235,11 @@ describe('Engine: event', () => {
})
engine.on('failure', failureSpy)

const { successResults, failureResults } = await engine.run()
const { results, failureResults } = await engine.run()

assertResult(successResults[0])
assertResult(results[0])
expect(failureResults).to.have.lengthOf(0)
expect(successResults).to.have.lengthOf(1)
expect(results).to.have.lengthOf(1)
expect(failureSpy.callCount).to.equal(0)
expect(successSpy.callCount).to.equal(1)
})
Expand Down Expand Up @@ -271,11 +271,11 @@ describe('Engine: event', () => {
engine.addFact('zipCode', ZIP_CODE) // zipCode fails
engine.addFact('gender', GENDER) // gender fails

const { successResults, failureResults } = await engine.run()
const { results, failureResults } = await engine.run()

assertResult(failureResults[0])
expect(failureResults).to.have.lengthOf(1)
expect(successResults).to.have.lengthOf(0)
expect(results).to.have.lengthOf(0)

expect(failureSpy.callCount).to.equal(1)
expect(successSpy.callCount).to.equal(0)
Expand Down Expand Up @@ -325,11 +325,11 @@ describe('Engine: event', () => {
})
rule.on('failure', failureSpy)

const { successResults, failureResults } = await engine.run()
const { results, failureResults } = await engine.run()

assertResult(successResults[0])
assertResult(results[0])
expect(failureResults).to.have.lengthOf(0)
expect(successResults).to.have.lengthOf(1)
expect(results).to.have.lengthOf(1)

expect(successSpy.callCount).to.equal(1)
expect(failureSpy.callCount).to.equal(0)
Expand Down Expand Up @@ -357,11 +357,11 @@ describe('Engine: event', () => {
rule.on('success', successSpy)
// both conditions will fail
engine.addFact('age', AGE)
const { successResults, failureResults } = await engine.run()
const { results, failureResults } = await engine.run()

assertResult(failureResults[0])
expect(failureResults).to.have.lengthOf(1)
expect(successResults).to.have.lengthOf(0)
expect(results).to.have.lengthOf(0)
expect(failureSpy.callCount).to.equal(1)
expect(successSpy.callCount).to.equal(0)
})
Expand Down

0 comments on commit f061af3

Please sign in to comment.