From 381c06bcecbffbad6d9b844afeca2bc9a1702240 Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Tue, 26 Dec 2017 07:51:01 +0000 Subject: [PATCH] Add test cases for generated nodes --- .gitignore | 1 + .travis.yml | 7 +++ package.json | 5 +- test/nodegen/helper.js | 28 ++++++++++ .../node-red-contrib-lowercase/node_spec.js | 53 ++++++++++++++++++ .../node_spec.js | 54 +++++++++++++++++++ 6 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 test/nodegen/helper.js create mode 100644 test/nodegen/node-red-contrib-lowercase/node_spec.js create mode 100644 test/nodegen/node-red-contrib-swagger-petstore/node_spec.js diff --git a/.gitignore b/.gitignore index 126f547..6b63343 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Generated nodes node-red-contrib-* node-red-node-* +nodegen # Dependency directory node_modules diff --git a/.travis.yml b/.travis.yml index 574685a..58eb249 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,3 +19,10 @@ script: before_script: - npm install -g istanbul - npm install coveralls + - npm install git+https://github.com/node-red/node-red.git + - export NODE_RED_HOME=`pwd`/node_modules/node-red + - (cd $NODE_RED_HOME ; npm install nock@~0.48.0) + - mkdir 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 + diff --git a/package.json b/package.json index 62b803d..f419f4a 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,10 @@ "grunt-simple-mocha": "0.4.1", "grunt-mocha-istanbul": "5.0.2", "should": "13.1.3", - "del": "3.0.0" + "sinon": "4.1.3", + "supertest": "3.0.0", + "del": "3.0.0", + "q": "1.5.1" }, "bin": { "node-red-nodegen": "./bin/node-red-nodegen.js" diff --git a/test/nodegen/helper.js b/test/nodegen/helper.js new file mode 100644 index 0000000..7a836eb --- /dev/null +++ b/test/nodegen/helper.js @@ -0,0 +1,28 @@ +/** + * 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 path = require('path'); + +process.env.NODE_RED_HOME = process.env.NODE_RED_HOME || path.resolve(__dirname+"/../../node-red"); +var helper = require(path.join(process.env.NODE_RED_HOME, 'test', 'nodes', 'helper.js')); + +try { + helper.nock = helper.nock || require("nock"); +} catch(er) { + helper.nock = null; +} +module.exports = helper; + diff --git a/test/nodegen/node-red-contrib-lowercase/node_spec.js b/test/nodegen/node-red-contrib-lowercase/node_spec.js new file mode 100644 index 0000000..9100515 --- /dev/null +++ b/test/nodegen/node-red-contrib-lowercase/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 functionNode = require("../../../nodegen/node-red-contrib-lowercase/node.js"); +var helper = require("../helper.js"); + +describe('node-red-contrib-lowercase', function () { + + before(function (done) { + helper.startServer(done); + }); + + afterEach(function () { + helper.unload(); + }); + + it('should be loaded', function (done) { + var flow = [{id: "n1", type: "lowercase", name: "lowercase" }]; + helper.load(functionNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.should.have.property('name', 'lowercase'); + done(); + }); + }); + it('should handle toLowerCase()', function (done) { + var flow = [{id: "n1", type: "lowercase", 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('payload', 'abcde'); + done(); + }); + n1.receive({payload: 'AbCdE'}); + }); + }); +}); + diff --git a/test/nodegen/node-red-contrib-swagger-petstore/node_spec.js b/test/nodegen/node-red-contrib-swagger-petstore/node_spec.js new file mode 100644 index 0000000..eb9ceb6 --- /dev/null +++ b/test/nodegen/node-red-contrib-swagger-petstore/node_spec.js @@ -0,0 +1,54 @@ +/** + * 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 swaggerNode = require("../../../nodegen/node-red-contrib-swagger-petstore/node.js"); +var helper = require("../helper.js"); + +describe('node-red-contrib-swagger-petstore', function () { + + before(function (done) { + helper.startServer(done); + }); + + afterEach(function () { + helper.unload(); + }); + + it('should be loaded', function (done) { + var flow = [{id: "n1", type: "swagger-petstore", name: "swagger-petstore" }]; + helper.load(swaggerNode, flow, function () { + var n1 = helper.getNode('n1'); + n1.should.have.property('name', 'swagger-petstore'); + done(); + }); + }); + it('should handle getInventory()', function (done) { + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "getInventory"}, + {id: "n2", type: "swagger-petstore-service"}, + {id: "n3", type: "helper"}]; + helper.load(swaggerNode, flow, function () { + var n1 = helper.getNode('n1'); + var n3 = helper.getNode('n3'); + n3.on('input', function (msg) { + msg.payload.should.have.property('123'); + done(); + }); + n1.receive({}); + }); + }); +}); +