From 40233c7702544df039b26d9cd60e797d5f4d9739 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 30 Jul 2021 13:17:05 +0100 Subject: [PATCH] Fix regression in Join node when manual joining array with msg.parts present Fixes #3096 --- .../@node-red/nodes/core/sequence/17-split.js | 3 --- test/nodes/core/sequence/17-split_spec.js | 24 ++++++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/sequence/17-split.js b/packages/node_modules/@node-red/nodes/core/sequence/17-split.js index bfc84a8d2..e3e4377f5 100644 --- a/packages/node_modules/@node-red/nodes/core/sequence/17-split.js +++ b/packages/node_modules/@node-red/nodes/core/sequence/17-split.js @@ -629,9 +629,6 @@ module.exports = function(RED) { if (node.build === 'object') { propertyKey = RED.util.getMessageProperty(msg,node.key); } - if (msg.hasOwnProperty("parts")) { - propertyIndex = msg.parts.index; - } } if (msg.hasOwnProperty("reset")) { diff --git a/test/nodes/core/sequence/17-split_spec.js b/test/nodes/core/sequence/17-split_spec.js index 0e4a07345..18ee8b299 100644 --- a/test/nodes/core/sequence/17-split_spec.js +++ b/test/nodes/core/sequence/17-split_spec.js @@ -516,6 +516,28 @@ describe('JOIN node', function() { n1.receive({payload:{a:1}}); }); }); + it('should join things into an array ignoring msg.parts.index in manual mode', function(done) { + var flow = [{id:"n1", type:"join", wires:[["n2"]], count:3, joiner:",",mode:"custom"}, + {id:"n2", type:"helper"}]; + helper.load(joinNode, flow, function() { + var n1 = helper.getNode("n1"); + var n2 = helper.getNode("n2"); + n2.on("input", function(msg) { + try { + msg.should.have.property("payload"); + msg.payload.should.be.an.Array(); + msg.payload[0].should.equal(1); + msg.payload[1].should.equal(true); + //msg.payload[2].a.should.equal(1); + done(); + } + catch(e) {done(e);} + }); + n1.receive({payload:1, parts: {index: 3}}); + n1.receive({payload:true, parts: {index: 0}}); + n1.receive({payload:{a:1}, parts: {index: 9}}); + }); + }); it('should join things into an array after a count with a buffer join set', function(done) { var flow = [{id:"n1", type:"join", wires:[["n2"]], count:3, joinerType:"bin", joiner:"" ,mode:"custom"}, @@ -1646,7 +1668,7 @@ describe('JOIN node', function() { }); }); - it('should handle join an array when using msg.parts and duplicate indexed parts arrive', function (done) { + it('should handle join an array when mode is auto and duplicate indexed parts arrive', function (done) { var flow = [{ id: "n1", type: "join", wires: [["n2"]], joiner: "[44]", joinerType: "bin", build: "array", mode: "auto" }, { id: "n2", type: "helper" }]; helper.load(joinNode, flow, function () {