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) { |     it('should allow input to be discarded by returning null', function(done) { | ||||||
|         var flow = [{id:"n1",type:"function",wires:[["n2"]],func:"return null"}, |         var flow = [{id:"n1",type:"function",wires:[["n2"]],func:"return null"}, | ||||||
|                     {id:"n2", type:"helper"}]; |                     {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