mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Merge pull request #2734 from node-red-hitachi/csv-node-mapi
Messaging API support in CSV node
This commit is contained in:
		| @@ -55,7 +55,7 @@ module.exports = function(RED) { | ||||
|         node.template = clean(node.template); | ||||
|         node.hdrSent = false; | ||||
|  | ||||
|         this.on("input", function(msg) { | ||||
|         this.on("input", function(msg, send, done) { | ||||
|             if (msg.hasOwnProperty("reset")) { | ||||
|                 node.hdrSent = false; | ||||
|             } | ||||
| @@ -145,9 +145,10 @@ module.exports = function(RED) { | ||||
|                         } | ||||
|                         msg.payload = ou; | ||||
|                         msg.columns = node.template.join(','); | ||||
|                         if (msg.payload !== '') { node.send(msg); } | ||||
|                         if (msg.payload !== '') { send(msg); } | ||||
|                         done(); | ||||
|                     } | ||||
|                     catch(e) { node.error(e,msg); } | ||||
|                     catch(e) { done(e); } | ||||
|                 } | ||||
|                 else if (typeof msg.payload == "string") { // convert CSV string to object | ||||
|                     try { | ||||
| @@ -256,13 +257,13 @@ module.exports = function(RED) { | ||||
|                                     msg.payload = node.store; | ||||
|                                     msg.columns = node.template.filter(val => val).join(','); | ||||
|                                     delete msg.parts; | ||||
|                                     node.send(msg); | ||||
|                                     send(msg); | ||||
|                                     node.store = []; | ||||
|                                 } | ||||
|                             } | ||||
|                             else { | ||||
|                                 msg.columns = node.template.filter(val => val).join(','); | ||||
|                                 node.send(msg); // finally send the array | ||||
|                                 send(msg); // finally send the array | ||||
|                             } | ||||
|                         } | ||||
|                         else { | ||||
| @@ -286,19 +287,21 @@ module.exports = function(RED) { | ||||
|                                         newMessage.parts.count -= 1; | ||||
|                                     } | ||||
|                                 } | ||||
|                                 node.send(newMessage); | ||||
|                                 send(newMessage); | ||||
|                             } | ||||
|                         } | ||||
|                         node.linecount = 0; | ||||
|                         done(); | ||||
|                     } | ||||
|                     catch(e) { node.error(e,msg); } | ||||
|                     catch(e) { done(e); } | ||||
|                 } | ||||
|                 else { node.warn(RED._("csv.errors.csv_js")); } | ||||
|                 else { node.warn(RED._("csv.errors.csv_js")); done(); } | ||||
|             } | ||||
|             else { | ||||
|                 if (!msg.hasOwnProperty("reset")) { | ||||
|                     node.send(msg); // If no payload and not reset - just pass it on. | ||||
|                     send(msg); // If no payload and not reset - just pass it on. | ||||
|                 } | ||||
|                 done(); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|   | ||||
| @@ -773,4 +773,43 @@ describe('CSV node', function() { | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
|     it('should call done when message processing is completed', function(done) { | ||||
|         const completeNode = require("nr-test-utils").require("@node-red/nodes/core/common/24-complete.js"); | ||||
|         const flow = [ { id:"n1", type:"csv", temp:"a,b,c,d", wires:[[]]}, | ||||
|                        { id:"c1", type:"complete", scope: ["n1"], uncaught:false, wires:[["h1"]]}, | ||||
|                        { id:"h1", type:"helper", wires:[[]]} ]; | ||||
|         helper.load([csvNode,completeNode], flow, function() { | ||||
|             const n1 = helper.getNode("n1"); | ||||
|             const h1 = helper.getNode("h1"); | ||||
|             h1.on("input", function(msg) { | ||||
|                 try { | ||||
|                     msg.should.have.a.property('payload', "1,2,3,4"); | ||||
|                     done(); | ||||
|                 } catch (e) { | ||||
|                     done(e); | ||||
|                 } | ||||
|             }); | ||||
|             n1.receive({payload:"1,2,3,4"}); | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
|     it('should call done when input causes an error', function(done) { | ||||
|         const completeNode = require("nr-test-utils").require("@node-red/nodes/core/common/24-complete.js"); | ||||
|         const flow = [ { id:"n1", type:"csv", temp:"a,b,c,d", wires:[[]]}, | ||||
|                        { id:"c1", type:"complete", scope: ["n1"], uncaught:false, wires:[["h1"]]}, | ||||
|                        { id:"h1", type:"helper", wires:[[]]} ]; | ||||
|         helper.load([csvNode,completeNode], flow, function() { | ||||
|             const n1 = helper.getNode("n1"); | ||||
|             const h1 = helper.getNode("h1"); | ||||
|             h1.on("input", function(msg) { | ||||
|                 try { | ||||
|                     msg.should.have.a.property('payload', 1); | ||||
|                     done(); | ||||
|                 } catch (e) { | ||||
|                     done(e); | ||||
|                 } | ||||
|             }); | ||||
|             n1.receive({payload:1}); // neither object nor string | ||||
|         }); | ||||
|     }); | ||||
| }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user