mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Merge pull request #309 from hindessm/more-function-node-tests
Add more tests for function node.
This commit is contained in:
		| @@ -48,6 +48,69 @@ describe('function node', function() { | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
|     it('should pass through _topic', function(done) { | ||||
|         var flow = [{id:"n1",type:"function",wires:[["n2"]],func:"return msg;"}, | ||||
|                     {id:"n2", type:"helper"}]; | ||||
|         helper.load(functionNode, flow, function() { | ||||
|             var n1 = helper.getNode("n1"); | ||||
|             var n2 = helper.getNode("n2"); | ||||
|             n2.on("input", function(msg) { | ||||
|                 msg.should.have.property('topic', 'bar'); | ||||
|                 msg.should.have.property('payload', 'foo'); | ||||
|                 msg.should.have.property('_topic', 'baz'); | ||||
|                 done(); | ||||
|             }); | ||||
|             n1.receive({payload:"foo",topic: "bar", _topic: "baz"}); | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
|     it('should send to multiple outputs', function(done) { | ||||
|         var flow = [{id:"n1",type:"function",wires:[["n2"],["n3"]], | ||||
|                      func:"return [{payload: '1'},{payload: '2'}];"}, | ||||
|                     {id:"n2", type:"helper"}, {id:"n3", type:"helper"} ]; | ||||
|         helper.load(functionNode, flow, function() { | ||||
|             var n1 = helper.getNode("n1"); | ||||
|             var n2 = helper.getNode("n2"); | ||||
|             var n3 = helper.getNode("n3"); | ||||
|             var count = 0; | ||||
|             n2.on("input", function(msg) { | ||||
|                 should(msg).have.property('payload', '1'); | ||||
|                 count++; | ||||
|                 if (count == 2) { | ||||
|                     done(); | ||||
|                 } | ||||
|             }); | ||||
|             n3.on("input", function(msg) { | ||||
|                 should(msg).have.property('payload', '2'); | ||||
|                 count++; | ||||
|                 if (count == 2) { | ||||
|                     done(); | ||||
|                 } | ||||
|             }); | ||||
|             n1.receive({payload:"foo",topic: "bar"}); | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
|     it('should send to multiple messages', function(done) { | ||||
|         var flow = [{id:"n1",type:"function",wires:[["n2"]], | ||||
|                      func:"return [[{payload: 1},{payload: 2}]];"}, | ||||
|                     {id:"n2", type:"helper"} ]; | ||||
|         helper.load(functionNode, flow, function() { | ||||
|             var n1 = helper.getNode("n1"); | ||||
|             var n2 = helper.getNode("n2"); | ||||
|             var count = 0; | ||||
|             n2.on("input", function(msg) { | ||||
|                 count++; | ||||
|                 should(msg).have.property('payload', count); | ||||
|                 should(msg).have.property('_topic', 'baz'); | ||||
|                 if (count == 2) { | ||||
|                     done(); | ||||
|                 } | ||||
|             }); | ||||
|             n1.receive({payload:"foo", topic: "bar", _topic:"baz"}); | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
|     it('should allow input to be discarded by returning null', function(done) { | ||||
|         var flow = [{id:"n1",type:"function",wires:[["n2"]],func:"return null"}, | ||||
|                     {id:"n2", type:"helper"}]; | ||||
| @@ -64,4 +127,19 @@ describe('function node', function() { | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
|     it('should handle and log script error', function(done) { | ||||
|         var flow = [{id:"n1",type:"function",wires:[["n2"]],func:"retunr"}]; | ||||
|         helper.load(functionNode, flow, function() { | ||||
|             var n1 = helper.getNode("n1"); | ||||
|             n1.on("log", function(msg) { | ||||
|                 msg.should.have.property('level', 'error'); | ||||
|                 msg.should.have.property('id', 'n1'); | ||||
|                 msg.should.have.property('type', 'function'); | ||||
|                 msg.should.have.property('msg', 'ReferenceError: retunr is not defined'); | ||||
|                 done(); | ||||
|             }); | ||||
|             n1.receive({payload:"foo",topic: "bar"}); | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
| }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user