diff options
Diffstat (limited to 'dgbuilder/test/nodes/core/logic/10-switch_spec.js')
-rw-r--r-- | dgbuilder/test/nodes/core/logic/10-switch_spec.js | 367 |
1 files changed, 0 insertions, 367 deletions
diff --git a/dgbuilder/test/nodes/core/logic/10-switch_spec.js b/dgbuilder/test/nodes/core/logic/10-switch_spec.js deleted file mode 100644 index d5a42805..00000000 --- a/dgbuilder/test/nodes/core/logic/10-switch_spec.js +++ /dev/null @@ -1,367 +0,0 @@ -/** - * Copyright 2014 IBM Corp. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - -var should = require("should"); - -var switchNode = require("../../../../nodes/core/logic/10-switch.js"); -var helper = require("../../helper.js"); - -describe('SwitchNode', function() { - - beforeEach(function(done) { - helper.startServer(done); - }); - - afterEach(function(done) { - helper.unload(); - helper.stopServer(done); - }); - - it('should be loaded', function(done) { - var flow = [{"id":"switchNode1","type":"switch","name":"switchNode","property":"payload","rules":[{"t":"eq","v":""}],"checkall":"true","outputs":1,"wires":[[]]}]; - helper.load(switchNode, flow, function() { - var switchNode1 = helper.getNode("switchNode1"); - switchNode1.should.have.property('name', 'switchNode'); - done(); - }); - }); - - /** - * Test a switch node where one argument is consumed by the rule (such as greater than). - * @param rule - the switch rule (see 10-switc.js) string we're using - * @param ruleWith - whatever the rule should be executed with (say greater than 5) - * @param aCheckall - whether the switch flow should have the checkall flag set to true/false - * @param shouldReceive - whether the helper node should receive a payload - * @param sendPayload - the payload message we're sending - * @param done - callback when done - */ - function genericSwitchTest(rule, ruleWith, aCheckall, shouldReceive, sendPayload, done) { - var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"payload",rules:[{"t":rule,"v":ruleWith}],checkall:aCheckall,outputs:1,wires:[["helperNode1"]]}, - {id:"helperNode1", type:"helper", wires:[]}]; - customFlowSwitchTest(flow, shouldReceive, sendPayload, done); - } - - /** - * Test a switch node where NO arguments are consumed by the rule (such as TRUE/FALSE) - * @param rule - the switch rule (see 10-switc.js) string we're using - * @param aCheckall - whether the switch flow should have the checkall flag set to true/false - * @param shouldReceive - whether the helper node should receive a payload - * @param sendPayload - the payload message we're sending - * @param done - callback when done - */ - function singularSwitchTest(rule, aCheckall, shouldReceive, sendPayload, done) { - var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"payload",rules:[{"t":rule}],checkall:aCheckall,outputs:1,wires:[["helperNode1"]]}, - {id:"helperNode1", type:"helper", wires:[]}]; - customFlowSwitchTest(flow, shouldReceive, sendPayload, done); - } - - /** - * Test a switch node where two arguments are consumed by the rule (such as between). - * @param rule - the switch rule (see 10-switc.js) string we're using - * @param ruleWith - whatever the rule should be executed with (say between 5...) - * @param ruleWith2 - whatever the rule should be executed with (say ...and 5) - * @param aCheckall - whether the switch flow should have the checkall flag set to true/false - * @param shouldReceive - whether the helper node should receive a payload - * @param sendPayload - the payload message we're sending - * @param done - callback when done - */ - function twoFieldSwitchTest(rule, ruleWith, ruleWith2, aCheckall, shouldReceive, sendPayload, done) { - var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"payload",rules:[{"t":rule,"v":ruleWith,"v2":ruleWith2}],checkall:aCheckall,outputs:1,wires:[["helperNode1"]]}, - {id:"helperNode1", type:"helper", wires:[]}]; - customFlowSwitchTest(flow, shouldReceive, sendPayload, done); - } - - /** - * Execute a switch test. Can specify whether the should node is expected to send a payload onwards to the helper node. - * The flow and the payload can be customised - * @param flow - the custom flow to be tested => must contain a switch node (switchNode1) wiring a helper node (helperNode1) - * @param shouldReceive - whether the helper node should receive a payload - * @param sendPayload - the payload message we're sending - * @param done - callback when done - */ - function customFlowSwitchTest(flow, shouldReceive, sendPayload, done) { - helper.load(switchNode, flow, function() { - var switchNode1 = helper.getNode("switchNode1"); - var helperNode1 = helper.getNode("helperNode1"); - helperNode1.on("input", function(msg) { - try { - if(shouldReceive === true) { - msg.payload.should.equal(sendPayload); - done(); - } else { - should.fail(null, null, "We should never get an input!"); - } - } catch(err) { - done(err); - } - }); - switchNode1.receive({payload:sendPayload}); - if(shouldReceive === false) { - setTimeout(function() { - done(); - }, 200); - } - }); - } - - it('should check if payload equals given value', function(done) { - genericSwitchTest("eq", "Hello", true, true, "Hello", done); - }); - - it('should return nothing when the payload doesn\'t equal to desired string', function(done) { - genericSwitchTest("eq", "Hello", true, false, "Hello!", done); - }); - - it('should check if payload NOT equals given value', function(done) { - genericSwitchTest("neq", "Hello", true, true, "HEllO", done); - }); - - it('should return nothing when the payload does equal to desired string', function(done) { - genericSwitchTest("neq", "Hello", true, false, "Hello", done); - }); - - it('should check if payload equals given numeric value', function(done) { - genericSwitchTest("eq", 3, true, true, 3, done); - }); - - it('should return nothing when the payload doesn\'t equal to desired numeric value', function(done) { - genericSwitchTest("eq", 2, true, false, 4, done); - }); - - it('should check if payload NOT equals given numeric value', function(done) { - genericSwitchTest("neq", 55667744, true, true, -1234, done); - }); - - it('should return nothing when the payload does equal to desired numeric value', function(done) { - genericSwitchTest("neq", 10, true, false, 10, done); - }); - - it('should check if payload is less than given value', function(done) { - genericSwitchTest("lt", 3, true, true, 2, done); - }); - - it('should return nothing when the payload is not less than desired string', function(done) { - genericSwitchTest("lt", 3, true, false, 4, done); - }); - - it('should check if payload less than equals given value', function(done) { - genericSwitchTest("lte", 3, true, true, 3, done); - }); - - it('should check if payload is greater than given value', function(done) { - genericSwitchTest("gt", 3, true, true, 6, done); - }); - - it('should return nothing when the payload is not greater than desired string', function(done) { - genericSwitchTest("gt", 3, true, false, -1, done); - }); - - it('should check if payload is greater than/equals given value', function(done) { - genericSwitchTest("gte", 3, true, true, 3, done); - }); - - it('should return nothing when the payload is not greater than desired string', function(done) { - genericSwitchTest("gt", 3, true, false, -1, done); - }); - - it('should check if payload is greater than/equals given value', function(done) { - genericSwitchTest("gte", 3, true, true, 3, done); - }); - - it('should check if payload is between given values', function(done) { - twoFieldSwitchTest("btwn", 3, 5, true, true, 4, done); - }); - - it('should check if payload is not between given values', function(done) { - twoFieldSwitchTest("btwn", 3, 5, true, false, 12, done); - }); - - it('should check if payload contains given value', function(done) { - genericSwitchTest("cont", "Hello", true, true, "Hello World!", done); - }); - - it('should return nothing when the payload doesn\'t contain desired string', function(done) { - genericSwitchTest("cont", "Hello", true, false, "This is not a greeting!", done); - }); - - it('should match regex', function(done) { - genericSwitchTest("regex", "[abc]+", true, true, "abbabac", done); - }); - - it('should return nothing when the payload doesn\'t match regex', function(done) { - genericSwitchTest("regex", "\\d+", true, false, "This is not a digit", done); - }); - - it('should return nothing when the payload doesn\'t contain desired string', function(done) { - genericSwitchTest("cont", "Hello", true, false, "This is not a greeting!", done); - }); - - it('should check if input is true', function(done) { - singularSwitchTest(true, true, true, true, done); - }); - - it('sends nothing when input is false and checking for true', function(done) { - singularSwitchTest(true, true, false, false, done); - }); - - it('should check if input is indeed false', function(done) { - singularSwitchTest(false, true, true, false, done); - }); - - it('sends nothing when input is false and checking for true', function(done) { - singularSwitchTest(false, true, false, true, done); - }); - - it('should check if input is indeed null', function(done) { - var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"payload",rules:[{"t":"null"}],checkall:true,outputs:1,wires:[["helperNode1"]]}, - {id:"helperNode1", type:"helper", wires:[]}]; - - - helper.load(switchNode, flow, function() { - var switchNode1 = helper.getNode("switchNode1"); - var helperNode1 = helper.getNode("helperNode1"); - helperNode1.on("input", function(msg) { - if(msg.payload) { - try { - should.fail(null, null, "msg.payload should be undefined!"); - } catch (err) { - done(err); - } - } else { - done(); - } - }); - switchNode1.receive({payload:undefined}); - }); - }); - - it('should check if input is indeed not null', function(done) { - var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"payload",rules:[{"t":"nnull"}],checkall:false,outputs:1,wires:[["helperNode1"]]}, - {id:"helperNode1", type:"helper", wires:[]}]; - - - helper.load(switchNode, flow, function() { - var switchNode1 = helper.getNode("switchNode1"); - var helperNode1 = helper.getNode("helperNode1"); - helperNode1.on("input", function(msg) { - if(msg.payload) { - done(); - } else { - try { - msg.payload.should.equal("Anything here"); - } catch (err) { - done(err); - } - } - }); - switchNode1.receive({payload:"Anything here"}); - }); - }); - - it('sends a message when the "else/otherwise" statement is selected' , function(done) { - singularSwitchTest("else", true, true, 123456, done); - }); - - it('handles more than one switch statement' , function(done) { - var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"payload",rules:[{"t":"eq","v":"Hello"},{"t":"cont","v":"ello"}, {"t":"else"}],checkall:true,outputs:3,wires:[["helperNode1"], ["helperNode2"], ["helperNode3"]]}, - {id:"helperNode1", type:"helper", wires:[]}, - {id:"helperNode2", type:"helper", wires:[]}, - {id:"helperNode3", type:"helper", wires:[]}]; - - - helper.load(switchNode, flow, function() { - var switchNode1 = helper.getNode("switchNode1"); - var helperNode1 = helper.getNode("helperNode1"); - var helperNode2 = helper.getNode("helperNode2"); - var helperNode3 = helper.getNode("helperNode3"); - - var nodeHitCount = 0; - helperNode1.on("input", function(msg) { - try { - msg.payload.should.equal("Hello"); - nodeHitCount++; - } catch (err) { - done(err); - } - }); - helperNode2.on("input", function(msg) { - try { - msg.payload.should.equal("Hello"); - nodeHitCount++; - if(nodeHitCount == 2) { - done(); - } else { - try { - should.fail(null, null, "Both statements should be triggered!"); - } catch (err) { - done(err); - } - } - } catch (err) { - done(err); - } - }); - helperNode3.on("input", function(msg) { - try { - should.fail(null, null, "The otherwise/else statement should not be triggered here!"); - } catch (err) { - done(err); - } - }); - switchNode1.receive({payload:"Hello"}); - }); - }); - - it('stops after first statement' , function(done) { - var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"payload",rules:[{"t":"eq","v":"Hello"},{"t":"cont","v":"ello"}, {"t":"else"}],checkall:"false",outputs:3,wires:[["helperNode1"], ["helperNode2"], ["helperNode3"]]}, - {id:"helperNode1", type:"helper", wires:[]}, - {id:"helperNode2", type:"helper", wires:[]}, - {id:"helperNode3", type:"helper", wires:[]}]; - - - helper.load(switchNode, flow, function() { - var switchNode1 = helper.getNode("switchNode1"); - var helperNode1 = helper.getNode("helperNode1"); - var helperNode2 = helper.getNode("helperNode2"); - var helperNode3 = helper.getNode("helperNode3"); - - helperNode1.on("input", function(msg) { - try { - msg.payload.should.equal("Hello"); - done(); - } catch (err) { - done(err); - } - }); - helperNode2.on("input", function(msg) { - try { - should.fail(null, null, "The otherwise/else statement should not be triggered here!"); - } catch (err) { - done(err); - } - }); - helperNode3.on("input", function(msg) { - try { - should.fail(null, null, "The otherwise/else statement should not be triggered here!"); - } catch (err) { - done(err); - } - }); - switchNode1.receive({payload:"Hello"}); - }); - }); - -}); |