-
Notifications
You must be signed in to change notification settings - Fork 181
/
scope.test.js
49 lines (40 loc) · 1.38 KB
/
scope.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"use strict";
var it = require("it"),
assert = require("assert"),
nools = require("../../");
it.describe("scope option", function (it) {
function isEqualTo(str, eq) {
return str === eq;
}
var Count = function () {
this.called = 0;
}, called = new Count();
var flow = nools.flow("scope test", function (flow) {
flow.rule("hello rule", {scope: {isEqualTo: isEqualTo}}, [
["or",
[String, "s", "isEqualTo(s, 'hello')"],
[String, "s", "isEqualTo(s, 'world')"]
],
[Count, "called", null]
], function (facts) {
facts.called.called++;
});
});
it.should("call when a string equals 'hello'", function () {
return flow.getSession("world", called).match().then(function () {
assert.equal(called.called, 1);
});
});
it.should("call when a string equals 'world'", function () {
called = new Count();
return flow.getSession("hello", called).match().then(function () {
assert.equal(called.called, 1);
});
});
it.should(" not call when a string that does equal 'hello' or 'world", function () {
called = new Count();
return flow.getSession("hello", "world", "test", called).match().then(function () {
assert.equal(called.called, 2);
});
});
});