diff --git a/nodes/core/core/89-trigger.html b/nodes/core/core/89-trigger.html
index 57b8e4ba8..3bbdfe603 100644
--- a/nodes/core/core/89-trigger.html
+++ b/nodes/core/core/89-trigger.html
@@ -162,7 +162,7 @@
$("#node-input-op1").typedInput({
default: 'str',
typeField: $("#node-input-op1type"),
- types:['flow','global','str','num','bool','json',
+ types:['flow','global','str','num','bool','json','bin','date','env',
optionPayload,
optionNothing
]
@@ -170,7 +170,7 @@
$("#node-input-op2").typedInput({
default: 'str',
typeField: $("#node-input-op2type"),
- types:['flow','global','str','num','bool','json',
+ types:['flow','global','str','num','bool','json','bin','date','env',
optionOriginalPayload,
optionLatestPayload,
optionNothing
diff --git a/test/nodes/core/core/89-trigger_spec.js b/test/nodes/core/core/89-trigger_spec.js
index 08a1757ed..5055518fa 100644
--- a/test/nodes/core/core/89-trigger_spec.js
+++ b/test/nodes/core/core/89-trigger_spec.js
@@ -35,6 +35,9 @@ describe('trigger node', function() {
},
memory1: {
module: "memory"
+ },
+ memory2: {
+ module: "memory"
}
}
});
@@ -96,6 +99,74 @@ describe('trigger node', function() {
});
});
+ function basicTest(type, val, rval) {
+ it('should output 1st value when triggered ('+type+')', function(done) {
+ var flow = [{"id":"n1", "type":"trigger", "name":"triggerNode", op1:val, op1type:type, op2:"", op2type:"null", duration:"20", wires:[["n2"]] },
+ {id:"n2", type:"helper"} ];
+ process.env[val] = rval;
+ helper.load(triggerNode, flow, function() {
+ var n1 = helper.getNode("n1");
+ var n2 = helper.getNode("n2");
+ n2.on("input", function(msg) {
+ try {
+ if (rval) {
+ msg.should.have.property("payload");
+ should.deepEqual(msg.payload, rval);
+ }
+ else {
+ msg.should.have.property("payload", val);
+ }
+ delete process.env[val];
+ done();
+ }
+ catch(err) { done(err); }
+ });
+ n1.emit("input", {payload:null});
+ });
+ });
+
+ it('should output 2st value when triggered ('+type+')', function(done) {
+ var flow = [{"id":"n1", "type":"trigger", "name":"triggerNode", op1:"foo", op1type:"str", op2:val, op2type:type, duration:"20", wires:[["n2"]] },
+ {id:"n2", type:"helper"} ];
+ process.env[val] = rval;
+ helper.load(triggerNode, flow, function() {
+ var n1 = helper.getNode("n1");
+ var n2 = helper.getNode("n2");
+ var c = 0;
+ n2.on("input", function(msg) {
+ try {
+ if (c === 0) {
+ msg.should.have.property("payload", "foo");
+ c++;
+ }
+ else {
+ if (rval) {
+ msg.should.have.property("payload");
+ should.deepEqual(msg.payload, rval);
+ }
+ else {
+ msg.should.have.property("payload", val);
+ }
+ delete process.env[val];
+ done();
+ }
+ }
+ catch(err) { done(err); }
+ });
+ n1.emit("input", {payload:null});
+ });
+ });
+ }
+
+ basicTest("num", 10);
+ basicTest("str", "10");
+ basicTest("bool", true);
+ var val_json = '{ "x":"vx", "y":"vy", "z":"vz" }';
+ basicTest("json", val_json, JSON.parse(val_json));
+ var val_buf = "[1,2,3,4,5]";
+ basicTest("bin", val_buf, Buffer.from(JSON.parse(val_buf)));
+ basicTest("env", "NR-TEST", "env-val");
+
it('should output 1 then 0 when triggered (default)', function(done) {
var flow = [{"id":"n1", "type":"trigger", "name":"triggerNode", duration:"20", wires:[["n2"]] },
{id:"n2", type:"helper"} ];
@@ -336,8 +407,8 @@ describe('trigger node', function() {
});
it('should be able to return things from persistable flow and global context variables', function (done) {
- var flow = [{"id": "n1", "type": "trigger", "name": "triggerNode", "op1": "#:(memory0)::foo", "op1type": "flow",
- "op2": "#:(memory0)::bar", "op2type": "global", "duration": "20", "wires": [["n2"]], "z": "flow" },
+ var flow = [{"id": "n1", "type": "trigger", "name": "triggerNode", "op1": "#:(memory1)::foo", "op1type": "flow",
+ "op2": "#:(memory1)::bar", "op2type": "global", "duration": "20", "wires": [["n2"]], "z": "flow" },
{"id": "n2", "type": "helper"}];
helper.load(triggerNode, flow, function () {
initContext(function () {
@@ -360,8 +431,8 @@ describe('trigger node', function() {
var context = n1.context();
var flow = context.flow;
var global = context.global;
- flow.set("foo", "foo", "memory0", function (err) {
- global.set("bar", "bar", "memory0", function (err) {
+ flow.set("foo", "foo", "memory1", function (err) {
+ global.set("bar", "bar", "memory1", function (err) {
n1.emit("input", { payload: null });
});
});
@@ -372,8 +443,8 @@ describe('trigger node', function() {
it('should be able to return things from multiple persistable global context variables', function (done) {
var flow = [{"id": "n1", "z": "flow", "type": "trigger",
"duration": "20", "wires": [["n2"]],
- "op1": "#:(memory0)::val", "op1type": "global",
- "op2": "#:(memory1)::val", "op2type": "global"
+ "op1": "#:(memory1)::val", "op1type": "global",
+ "op2": "#:(memory2)::val", "op2type": "global"
},
{"id": "n2", "type": "helper"}];
helper.load(triggerNode, flow, function () {
@@ -399,8 +470,8 @@ describe('trigger node', function() {
}
});
var global = n1.context().global;
- global.set("val", "foo", "memory0", function (err) {
- global.set("val", "bar", "memory1", function (err) {
+ global.set("val", "foo", "memory1", function (err) {
+ global.set("val", "bar", "memory2", function (err) {
n1.emit("input", { payload: null });
});
});
@@ -411,8 +482,8 @@ describe('trigger node', function() {
it('should be able to return things from multiple persistable flow context variables', function (done) {
var flow = [{"id": "n1", "z": "flow", "type": "trigger",
"duration": "20", "wires": [["n2"]],
- "op1": "#:(memory0)::val", "op1type": "flow",
- "op2": "#:(memory1)::val", "op2type": "flow"
+ "op1": "#:(memory1)::val", "op1type": "flow",
+ "op2": "#:(memory2)::val", "op2type": "flow"
},
{"id": "n2", "type": "helper"}];
helper.load(triggerNode, flow, function () {
@@ -438,8 +509,8 @@ describe('trigger node', function() {
}
});
var flow = n1.context().flow;
- flow.set("val", "foo", "memory0", function (err) {
- flow.set("val", "bar", "memory1", function (err) {
+ flow.set("val", "foo", "memory1", function (err) {
+ flow.set("val", "bar", "memory2", function (err) {
n1.emit("input", { payload: null });
});
});
@@ -450,8 +521,8 @@ describe('trigger node', function() {
it('should be able to return things from multiple persistable flow & global context variables', function (done) {
var flow = [{"id": "n1", "z": "flow", "type": "trigger",
"duration": "20", "wires": [["n2"]],
- "op1": "#:(memory0)::val", "op1type": "flow",
- "op2": "#:(memory1)::val", "op2type": "global"
+ "op1": "#:(memory1)::val", "op1type": "flow",
+ "op2": "#:(memory2)::val", "op2type": "global"
},
{"id": "n2", "type": "helper"}];
helper.load(triggerNode, flow, function () {
@@ -479,8 +550,8 @@ describe('trigger node', function() {
var context = n1.context();
var flow = context.flow;
var global = context.flow;
- flow.set("val", "foo", "memory0", function (err) {
- global.set("val", "bar", "memory1", function (err) {
+ flow.set("val", "foo", "memory1", function (err) {
+ global.set("val", "bar", "memory2", function (err) {
n1.emit("input", { payload: null });
});
});