mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Add test cases accessing context with JSONata to Switch Node
This commit is contained in:
parent
3a8aaee5d7
commit
83a8979309
@ -19,6 +19,7 @@ var should = require("should");
|
||||
var switchNode = require("../../../../nodes/core/logic/10-switch.js");
|
||||
var helper = require("node-red-node-test-helper");
|
||||
var RED = require("../../../../red/red.js");
|
||||
var Context = require("../../../../red/runtime/nodes/context");
|
||||
|
||||
describe('switch Node', function() {
|
||||
|
||||
@ -26,10 +27,24 @@ describe('switch Node', function() {
|
||||
helper.startServer(done);
|
||||
});
|
||||
|
||||
function initContext(done) {
|
||||
Context.init({
|
||||
contextStorage: {
|
||||
memory: {
|
||||
module: "memory"
|
||||
}
|
||||
}
|
||||
});
|
||||
Context.load().then(function () {
|
||||
done();
|
||||
});
|
||||
}
|
||||
|
||||
afterEach(function(done) {
|
||||
helper.unload();
|
||||
RED.settings.nodeMessageBufferMaxLength = 0;
|
||||
helper.stopServer(done);
|
||||
helper.unload().then(function(){
|
||||
RED.settings.nodeMessageBufferMaxLength = 0;
|
||||
helper.stopServer(done);
|
||||
});
|
||||
});
|
||||
|
||||
it('should be loaded with some defaults', function(done) {
|
||||
@ -653,6 +668,53 @@ describe('switch Node', function() {
|
||||
customFlowSwitchTest(flow, true, -5, done);
|
||||
});
|
||||
|
||||
it('should handle flow and global contexts with JSONata expression', function(done) {
|
||||
var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"$abs($flowContext(\"payload\"))",propertyType:"jsonata",rules:[{"t":"btwn","v":"$flowContext(\"vt\")","vt":"jsonata","v2":"$globalContext(\"v2t\")","v2t":"jsonata"}],checkall:true,outputs:1,wires:[["helperNode1"]],z:"flow"},
|
||||
{id:"helperNode1", type:"helper", wires:[],z:"flow"},
|
||||
{id:"flow",type:"tab"}];
|
||||
helper.load(switchNode, flow, function() {
|
||||
var switchNode1 = helper.getNode("switchNode1");
|
||||
var helperNode1 = helper.getNode("helperNode1");
|
||||
switchNode1.context().flow.set("payload",-5);
|
||||
switchNode1.context().flow.set("vt",4);
|
||||
switchNode1.context().global.set("v2t",6);
|
||||
helperNode1.on("input", function(msg) {
|
||||
try {
|
||||
should.equal(msg.payload,"pass");
|
||||
done();
|
||||
} catch(err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
switchNode1.receive({payload:"pass"});
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle persistable flow and global contexts with JSONata expression', function(done) {
|
||||
var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"$abs($flowContext(\"payload\",\"memory\"))",propertyType:"jsonata",rules:[{"t":"btwn","v":"$flowContext(\"vt\",\"memory\")","vt":"jsonata","v2":"$globalContext(\"v2t\",\"memory\")","v2t":"jsonata"}],checkall:true,outputs:1,wires:[["helperNode1"]],z:"flow"},
|
||||
{id:"helperNode1", type:"helper", wires:[],z:"flow"},
|
||||
{id:"flow",type:"tab"}];
|
||||
helper.load(switchNode, flow, function() {
|
||||
initContext(function () {
|
||||
var switchNode1 = helper.getNode("switchNode1");
|
||||
var helperNode1 = helper.getNode("helperNode1");
|
||||
switchNode1.context().flow.set(["payload","vt"],[-7,6],"memory",function(){
|
||||
switchNode1.context().global.set("v2t",8,"memory",function(){
|
||||
helperNode1.on("input", function(msg) {
|
||||
try {
|
||||
should.equal(msg.payload,"pass");
|
||||
done();
|
||||
} catch(err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
switchNode1.receive({payload:"pass"});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should take head of message sequence (no repair)', function(done) {
|
||||
var flow = [{id:"switchNode1",type:"switch",name:"switchNode",property:"payload",rules:[{"t":"head","v":3}],checkall:false,repair:false,outputs:1,wires:[["helperNode1"]]},
|
||||
{id:"helperNode1", type:"helper", wires:[]}];
|
||||
|
Loading…
Reference in New Issue
Block a user