From f16d5e9f25095bb32df0224e9e82112390e24602 Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Mon, 21 May 2018 16:38:59 +0900 Subject: [PATCH] Add test cases for function node template --- Gruntfile.js | 6 ++ samples/handle-clearInterval.js | 4 ++ samples/handle-setInterval.js | 3 + samples/handle-setTimeout.js | 3 + samples/log-a-Warning-Message.js | 3 + samples/log-an-Error-Message.js | 3 + samples/log-an-Info-Message.js | 3 + .../node_spec.js | 53 +++++++++++++++ .../node_spec.js | 57 +++++++++++++++++ .../node_spec.js | 64 +++++++++++++++++++ .../node_spec.js | 61 ++++++++++++++++++ .../node_spec.js | 61 ++++++++++++++++++ .../node_spec.js | 61 ++++++++++++++++++ 13 files changed, 382 insertions(+) create mode 100755 samples/handle-clearInterval.js create mode 100755 samples/handle-setInterval.js create mode 100755 samples/handle-setTimeout.js create mode 100755 samples/log-a-Warning-Message.js create mode 100755 samples/log-an-Error-Message.js create mode 100755 samples/log-an-Info-Message.js create mode 100755 test/nodegen/node-red-contrib-handle-clear-interval/node_spec.js create mode 100755 test/nodegen/node-red-contrib-handle-set-interval/node_spec.js create mode 100755 test/nodegen/node-red-contrib-handle-set-timeout/node_spec.js create mode 100755 test/nodegen/node-red-contrib-log-a-warning-message/node_spec.js create mode 100755 test/nodegen/node-red-contrib-log-an-error-message/node_spec.js create mode 100755 test/nodegen/node-red-contrib-log-an-info-message/node_spec.js diff --git a/Gruntfile.js b/Gruntfile.js index 8a0420b..b1df849 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -4,6 +4,12 @@ module.exports = function (grunt) { generate_nodes: { command: [ 'mkdir nodegen', + 'node bin/node-red-nodegen.js samples/handle-clearInterval.js -o ./nodegen', + 'node bin/node-red-nodegen.js samples/handle-setInterval.js -o ./nodegen', + 'node bin/node-red-nodegen.js samples/handle-setTimeout.js -o ./nodegen', + 'node bin/node-red-nodegen.js samples/log-a-Warning-Message.js -o ./nodegen', + 'node bin/node-red-nodegen.js samples/log-an-Error-Message.js -o ./nodegen', + 'node bin/node-red-nodegen.js samples/log-an-Info-Message.js -o ./nodegen', 'node bin/node-red-nodegen.js samples/lower-case.js -o ./nodegen', 'node bin/node-red-nodegen.js http://petstore.swagger.io/v2/swagger.json -o ./nodegen' ].join(';') diff --git a/samples/handle-clearInterval.js b/samples/handle-clearInterval.js new file mode 100755 index 0000000..2e0b822 --- /dev/null +++ b/samples/handle-clearInterval.js @@ -0,0 +1,4 @@ +// name: handle clearInterval +// outputs: 1 +var id=setInterval(null,100); +setTimeout(function(){clearInterval(id);node.send(msg);},1000); \ No newline at end of file diff --git a/samples/handle-setInterval.js b/samples/handle-setInterval.js new file mode 100755 index 0000000..c326515 --- /dev/null +++ b/samples/handle-setInterval.js @@ -0,0 +1,3 @@ +// name: handle setInterval +// outputs: 1 +setInterval(function(){node.send(msg);},100); \ No newline at end of file diff --git a/samples/handle-setTimeout.js b/samples/handle-setTimeout.js new file mode 100755 index 0000000..6e57037 --- /dev/null +++ b/samples/handle-setTimeout.js @@ -0,0 +1,3 @@ +// name: handle setTimeout +// outputs: 1 +setTimeout(function(){node.send(msg);},1000); \ No newline at end of file diff --git a/samples/log-a-Warning-Message.js b/samples/log-a-Warning-Message.js new file mode 100755 index 0000000..4e97d66 --- /dev/null +++ b/samples/log-a-Warning-Message.js @@ -0,0 +1,3 @@ +// name: log a Warning Message +// outputs: 1 +node.warn('test'); \ No newline at end of file diff --git a/samples/log-an-Error-Message.js b/samples/log-an-Error-Message.js new file mode 100755 index 0000000..b6b0bb5 --- /dev/null +++ b/samples/log-an-Error-Message.js @@ -0,0 +1,3 @@ +// name: log an Error Message +// outputs: 1 +node.error('test'); \ No newline at end of file diff --git a/samples/log-an-Info-Message.js b/samples/log-an-Info-Message.js new file mode 100755 index 0000000..db4cd57 --- /dev/null +++ b/samples/log-an-Info-Message.js @@ -0,0 +1,3 @@ +// name: log an Info Message +// outputs: 1 +node.log('test'); \ No newline at end of file diff --git a/test/nodegen/node-red-contrib-handle-clear-interval/node_spec.js b/test/nodegen/node-red-contrib-handle-clear-interval/node_spec.js new file mode 100755 index 0000000..c77c436 --- /dev/null +++ b/test/nodegen/node-red-contrib-handle-clear-interval/node_spec.js @@ -0,0 +1,53 @@ +/** + * Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +var should = require("should"); +var helper = require("node-red-node-test-helper"); +var functionNode = require("../../../nodegen/node-red-contrib-handle-clear-interval"); + +describe('node-red-contrib-handle-clear-interval', function () { + + before(function (done) { + helper.startServer(done); + }); + + afterEach(function () { + helper.unload(); + }); + + it('should be loaded', function (done) { + var flow = [{id: "n1", type: "handle-clear-interval", name: "handle-clear-interval" }]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.should.have.property('name', 'handle-clear-interval'); + done(); + }); + }); + it('should handle clearInterval()', function (done) { + var flow = [{id: "n1", type: "handle-clear-interval", wires: [["n2"]]}, + {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'); + done(); + }); + n1.receive({payload:"foo",topic: "bar"}); + }); + }); +}); diff --git a/test/nodegen/node-red-contrib-handle-set-interval/node_spec.js b/test/nodegen/node-red-contrib-handle-set-interval/node_spec.js new file mode 100755 index 0000000..d38cc7c --- /dev/null +++ b/test/nodegen/node-red-contrib-handle-set-interval/node_spec.js @@ -0,0 +1,57 @@ +/** + * Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +var should = require("should"); +var helper = require("node-red-node-test-helper"); +var functionNode = require("../../../nodegen/node-red-contrib-handle-set-interval"); + +describe('node-red-contrib-handle-set-interval', function () { + + before(function (done) { + helper.startServer(done); + }); + + afterEach(function () { + helper.unload(); + }); + + it('should be loaded', function (done) { + var flow = [{id: "n1", type: "handle-set-interval", name: "handle-set-interval" }]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.should.have.property('name', 'handle-set-interval'); + done(); + }); + }); + it('should handle setInterval()', function (done) { + var flow = [{id: "n1", type: "handle-set-interval", wires: [["n2"]]}, + {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) { + msg.should.have.property('topic', 'bar'); + msg.should.have.property('payload', 'foo'); + count++; + if (count > 2) { + done(); + } + }); + n1.receive({payload:"foo",topic: "bar"}); + }); + }); +}); diff --git a/test/nodegen/node-red-contrib-handle-set-timeout/node_spec.js b/test/nodegen/node-red-contrib-handle-set-timeout/node_spec.js new file mode 100755 index 0000000..afb6379 --- /dev/null +++ b/test/nodegen/node-red-contrib-handle-set-timeout/node_spec.js @@ -0,0 +1,64 @@ +/** + * Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +var should = require("should"); +var helper = require("node-red-node-test-helper"); +var functionNode = require("../../../nodegen/node-red-contrib-handle-set-timeout"); + +describe('node-red-contrib-handle-set-timeout', function () { + + before(function (done) { + helper.startServer(done); + }); + + afterEach(function () { + helper.unload(); + }); + + it('should be loaded', function (done) { + var flow = [{id: "n1", type: "handle-set-timeout", name: "handle-set-timeout" }]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.should.have.property('name', 'handle-set-timeout'); + done(); + }); + }); + it('should handle setTimeout()', function (done) { + var flow = [{id: "n1", type: "handle-set-timeout", wires: [["n2"]]}, + {id:"n2", type:"helper"}]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode("n1"); + var n2 = helper.getNode("n2"); + n2.on("input", function(msg) { + var endTime = process.hrtime(startTime); + var nanoTime = endTime[0] * 1000000000 + endTime[1]; + msg.should.have.property('topic', 'bar'); + msg.should.have.property('payload', 'foo'); + if (900000000 < nanoTime && nanoTime < 1100000000) { + done(); + } else { + try { + should.fail(null, null, "Delayed time was not between 900 and 1100 ms"); + } catch (err) { + done(err); + } + } + }); + var startTime = process.hrtime(); + n1.receive({payload:"foo",topic: "bar"}); + }); + }); +}); diff --git a/test/nodegen/node-red-contrib-log-a-warning-message/node_spec.js b/test/nodegen/node-red-contrib-log-a-warning-message/node_spec.js new file mode 100755 index 0000000..602196c --- /dev/null +++ b/test/nodegen/node-red-contrib-log-a-warning-message/node_spec.js @@ -0,0 +1,61 @@ +/** + * Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +var should = require("should"); +var helper = require("node-red-node-test-helper"); +var functionNode = require("../../../nodegen/node-red-contrib-log-a-warning-message/node.js"); + +describe('node-red-contrib-log-a-warning-message', function () { + + before(function (done) { + helper.startServer(done); + }); + + afterEach(function () { + helper.unload(); + }); + + it('should be loaded', function (done) { + var flow = [{id: "n1", type: "log-a-warning-message", name: "log-a-warning-message" }]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.should.have.property('name', 'log-a-warning-message'); + done(); + }); + }); + it('should log a Warning Message', function (done) { + var flow = [{id: "n1", type: "log-a-warning-message", wires: [["n2"]]}]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.receive({payload: "foo", topic: "bar"}); + try { + helper.log().called.should.be.true(); + var logEvents = helper.log().args.filter(function (evt) { + return evt[0].type == "log-a-warning-message"; + }); + logEvents.should.have.length(1); + var msg = logEvents[0][0]; + msg.should.have.property('level', helper.log().WARN); + msg.should.have.property('id', 'n1'); + msg.should.have.property('type', 'log-a-warning-message'); + msg.should.have.property('msg', 'test'); + done(); + } catch (err) { + done(err); + } + }); + }); +}); diff --git a/test/nodegen/node-red-contrib-log-an-error-message/node_spec.js b/test/nodegen/node-red-contrib-log-an-error-message/node_spec.js new file mode 100755 index 0000000..e4c31a1 --- /dev/null +++ b/test/nodegen/node-red-contrib-log-an-error-message/node_spec.js @@ -0,0 +1,61 @@ +/** + * Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +var should = require("should"); +var helper = require("node-red-node-test-helper"); +var functionNode = require("../../../nodegen/node-red-contrib-log-an-error-message/node.js"); + +describe('node-red-contrib-log-an-error-message', function () { + + before(function (done) { + helper.startServer(done); + }); + + afterEach(function () { + helper.unload(); + }); + + it('should be loaded', function (done) { + var flow = [{id: "n1", type: "log-an-error-message", name: "log-an-error-message" }]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.should.have.property('name', 'log-an-error-message'); + done(); + }); + }); + it('should log an Error Message', function (done) { + var flow = [{id: "n1", type: "log-an-error-message", wires: [["n2"]]}]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.receive({payload: "foo", topic: "bar"}); + try { + helper.log().called.should.be.true(); + var logEvents = helper.log().args.filter(function (evt) { + return evt[0].type == "log-an-error-message"; + }); + logEvents.should.have.length(1); + var msg = logEvents[0][0]; + msg.should.have.property('level', helper.log().ERROR); + msg.should.have.property('id', 'n1'); + msg.should.have.property('type', 'log-an-error-message'); + msg.should.have.property('msg', 'test'); + done(); + } catch (err) { + done(err); + } + }); + }); +}); diff --git a/test/nodegen/node-red-contrib-log-an-info-message/node_spec.js b/test/nodegen/node-red-contrib-log-an-info-message/node_spec.js new file mode 100755 index 0000000..6c912f4 --- /dev/null +++ b/test/nodegen/node-red-contrib-log-an-info-message/node_spec.js @@ -0,0 +1,61 @@ +/** + * Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +var should = require("should"); +var helper = require("node-red-node-test-helper"); +var functionNode = require("../../../nodegen/node-red-contrib-log-an-info-message/node.js"); + +describe('node-red-contrib-log-an-info-message', function () { + + before(function (done) { + helper.startServer(done); + }); + + afterEach(function () { + helper.unload(); + }); + + it('should be loaded', function (done) { + var flow = [{id: "n1", type: "log-an-info-message", name: "log-an-info-message" }]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.should.have.property('name', 'log-an-info-message'); + done(); + }); + }); + it('should log an Error Message', function (done) { + var flow = [{id: "n1", type: "log-an-info-message", wires: [["n2"]]}]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.receive({payload: "foo", topic: "bar"}); + try { + helper.log().called.should.be.true(); + var logEvents = helper.log().args.filter(function (evt) { + return evt[0].type == "log-an-info-message"; + }); + logEvents.should.have.length(1); + var msg = logEvents[0][0]; + msg.should.have.property('level', helper.log().INFO); + msg.should.have.property('id', 'n1'); + msg.should.have.property('type', 'log-an-info-message'); + msg.should.have.property('msg', 'test'); + done(); + } catch (err) { + done(err); + } + }); + }); +});