From 72c400794cb272b6c68640f0ce24b5b4f97f582b Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Thu, 16 Aug 2018 09:41:43 +0100 Subject: [PATCH] Change node must handle empty rule set --- nodes/core/logic/15-change.js | 3 +++ test/nodes/core/logic/15-change_spec.js | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/nodes/core/logic/15-change.js b/nodes/core/logic/15-change.js index 2c1443846..2e2332615 100644 --- a/nodes/core/logic/15-change.js +++ b/nodes/core/logic/15-change.js @@ -283,6 +283,9 @@ module.exports = function(RED) { } } function applyRules(msg, currentRule) { + if (currentRule >= node.rules.length) { + return Promise.resolve(msg); + } var r = node.rules[currentRule]; var rulePromise; if (r.t === "move") { diff --git a/test/nodes/core/logic/15-change_spec.js b/test/nodes/core/logic/15-change_spec.js index 8a7d123de..eda82a685 100644 --- a/test/nodes/core/logic/15-change_spec.js +++ b/test/nodes/core/logic/15-change_spec.js @@ -78,6 +78,24 @@ describe('change Node', function() { done(); }); }); + it('should no-op if there are no rules', function(done) { + var flow = [{"id":"changeNode1","type":"change","rules":[],"action":"","property":"","from":"","to":"","reg":false,"name":"changeNode","wires":[["helperNode1"]]}, + {id:"helperNode1", type:"helper", wires:[]}]; + helper.load(changeNode, flow, function() { + var changeNode1 = helper.getNode("changeNode1"); + var helperNode1 = helper.getNode("helperNode1"); + helperNode1.on("input", function(msg) { + try { + msg.should.eql(sentMsg); + done(); + } catch(err) { + done(err); + } + }); + var sentMsg = {payload:"leaveMeAlong"}; + changeNode1.receive(sentMsg); + }); + }); describe('#set' , function() {