I have tried to create test cases for custom nodes generated from a subflow but the test using helper module fails. In this issue, I wrote the example case of the error using a lower-case node created from subflow which contains a function node to use msg.payload.toLowerCase();.
What are the steps to reproduce?
Prepare the following files under the node-red-contrib-example-lower-case directory. And then, execute the npm install and npm test commands.
var helper = require("node-red-node-test-helper");
var lowerNode = require("../lower-case.js");
describe('lower-case Node', function () {
afterEach(function () {
helper.unload();
});
it('should be loaded', function (done) {
var flow = [{ id: "n1", type: "lower-case", name: "test name" }];
helper.load(lowerNode, flow, function () {
var n1 = helper.getNode("n1");
n1.should.have.property('name', 'test name');
done();
});
});
it('should make payload lower case', function (done) {
var flow = [{ id: "n1", type: "lower-case", name: "test name",wires:[["n2"]] },
{ id: "n2", type: "helper" }];
helper.load(lowerNode, flow, function () {
var n2 = helper.getNode("n2");
var n1 = helper.getNode("n1");
n2.on("input", function (msg) {
msg.should.have.property('payload', 'uppercase');
done();
});
n1.receive({ payload: "UpperCase" });
});
});
});
{
"name": "node-red-contrib-example-lower-case",
"scripts": {
"test": "mocha \"test/**/*_spec.js\""
},
"node-red": {
"nodes": {
"lower-case": "lower-case.js"
}
},
"dependencies": {
"mocha": "10.1.0",
"node-red": "3.0.2",
"node-red-node-test-helper": "0.3.0"
}
}
module.exports = function (RED) {
const fs = require('fs');
const path = require("path");
const file = path.join(__dirname, "subflow.json");
const text = fs.readFileSync(file);
const flow = JSON.parse(text);
RED.nodes.registerSubflow(flow);
}
{
"id": "277d18ee2b9e83c9",
"type": "subflow",
"name": "lower-case",
"info": "",
"category": "",
"in": [
{
"x": 60,
"y": 80,
"wires": [
{
"id": "5b296b72cfed90ed"
}
]
}
],
"out": [
{
"x": 340,
"y": 80,
"wires": [
{
"id": "5b296b72cfed90ed",
"port": 0
}
]
}
],
"env": [],
"meta": {
"module": "node-red-contrib-example-lower-case",
"type": "lower-case",
"version": "1.0.0",
"license": "Apache-2.0"
},
"color": "#DDAA99",
"flow": [
{
"id": "5b296b72cfed90ed",
"type": "function",
"z": "277d18ee2b9e83c9",
"name": "function 1",
"func": "msg.payload = msg.payload.toLowerCase();\nnode.send(msg);",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 200,
"y": 80,
"wires": [
[]
]
},
{
"id": "a10f2fbc4615646b",
"type": "subflow:277d18ee2b9e83c9",
"z": "07d1ca735eae83bd",
"name": "",
"x": 410,
"y": 120,
"wires": [
[
"8c055b9e31ec3702"
]
]
}
]
}
What happens?
The npm test command outputs the timeout error.
$ npm test
> test
> mocha "test/**/*_spec.js"
lower-case Node
1) should be loaded
2) should make payload lower case
0 passing (4s)
2 failing
1) lower-case Node
should be loaded:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/kazuhitoyokoi/Desktop/node-red-contrib-example-lower-case/test/lower-case_spec.js)
at listOnTimeout (node:internal/timers:564:17)
at process.processTimers (node:internal/timers:507:7)
2) lower-case Node
should make payload lower case:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/kazuhitoyokoi/Desktop/node-red-contrib-example-lower-case/test/lower-case_spec.js)
at listOnTimeout (node:internal/timers:564:17)
at process.processTimers (node:internal/timers:507:7)
What do you expect to happen?
The npm test command passes the test cases. The following is the output of a custom node created by general node development.
$ npm test
> test
> mocha "test/**/*_spec.js"
lower-case Node
✔ should be loaded
✔ should make payload lower case
2 passing (10ms)
Please tell us about your environment:
I have tried to create test cases for custom nodes generated from a subflow but the test using helper module fails. In this issue, I wrote the example case of the error using a
lower-casenode created from subflow which contains a function node to usemsg.payload.toLowerCase();.What are the steps to reproduce?
Prepare the following files under the
node-red-contrib-example-lower-casedirectory. And then, execute thenpm installandnpm testcommands.What happens?
The
npm testcommand outputs the timeout error.What do you expect to happen?
The
npm testcommand passes the test cases. The following is the output of a custom node created by general node development.Please tell us about your environment: