diff --git a/packages/node_modules/@node-red/nodes/core/function/10-switch.js b/packages/node_modules/@node-red/nodes/core/function/10-switch.js index 95071731d..aa1972221 100644 --- a/packages/node_modules/@node-red/nodes/core/function/10-switch.js +++ b/packages/node_modules/@node-red/nodes/core/function/10-switch.js @@ -217,6 +217,10 @@ module.exports = function(RED) { function applyRules(node, msg, property,state,done) { if (!state) { + if (node.rules.length === 0) { + done(undefined, []); + return; + } state = { currentRule: 0, elseflag: true, diff --git a/test/nodes/core/function/10-switch_spec.js b/test/nodes/core/function/10-switch_spec.js index dfcc55572..180ec9d36 100644 --- a/test/nodes/core/function/10-switch_spec.js +++ b/test/nodes/core/function/10-switch_spec.js @@ -1134,4 +1134,20 @@ describe('switch Node', function() { }); }); + + it('should handle empty rule', function(done) { + var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"payload",rules:[],checkall:true,outputs:0,wires:[]}]; + helper.load(switchNode, flow, function() { + var n1 = helper.getNode("switchNode1"); + setTimeout(function() { + var logEvents = helper.log().args.filter(function (evt) { + return evt[0].type == "switch"; + }); + if (logEvents.length === 0) { + done(); + } + }, 150); + n1.receive({payload:1}); + }); + }); });