mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Add propertySelect support to Change node
This commit is contained in:
@@ -34,7 +34,7 @@ describe('change Node', function() {
|
||||
var flow = [{ id: "c1", type: "change", name:"change1" }];
|
||||
helper.load(changeNode, flow, function() {
|
||||
helper.getNode("c1").should.have.property("name", "change1");
|
||||
helper.getNode("c1").should.have.property("rules", [{t:undefined,p:''}]);
|
||||
helper.getNode("c1").should.have.property("rules", [{fromt:'str',pt:'msg',tot:'str',t:undefined,p:''}]);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -42,7 +42,7 @@ describe('change Node', function() {
|
||||
var flow = [{ id: "c1", type: "change", name:"change1", action:"replace" }];
|
||||
helper.load(changeNode, flow, function() {
|
||||
helper.getNode("c1").should.have.property("name", "change1");
|
||||
helper.getNode("c1").should.have.property("rules", [ { p: '', t: 'set', to: '' } ]);
|
||||
helper.getNode("c1").should.have.property("rules", [ {fromt: 'str', p: '', pt: 'msg', t: 'set', to: '', tot: 'str'} ]);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -51,12 +51,12 @@ describe('change Node', function() {
|
||||
helper.load(changeNode, flow, function() {
|
||||
//console.log(helper.getNode("c1"));
|
||||
helper.getNode("c1").should.have.property("name", "change1");
|
||||
helper.getNode("c1").should.have.property("rules", [ { from: /(?:)/g, p: '', re: undefined, t: 'change', to: '' } ]);
|
||||
helper.getNode("c1").should.have.property("rules", [ { from: /(?:)/g,fromt: 'str', p: '',pt: 'msg', re: undefined, t: 'change', to: '',tot: 'str' } ]);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('#replace' , function() {
|
||||
describe('#set' , function() {
|
||||
|
||||
it('sets the value of the message property', function(done) {
|
||||
var flow = [{"id":"changeNode1","type":"change","action":"replace","property":"payload","from":"","to":"changed","reg":false,"name":"changeNode","wires":[["helperNode1"]]},
|
||||
@@ -64,6 +64,7 @@ describe('change Node', function() {
|
||||
helper.load(changeNode, flow, function() {
|
||||
var changeNode1 = helper.getNode("changeNode1");
|
||||
var helperNode1 = helper.getNode("helperNode1");
|
||||
var rule = helper.getNode("changeNode1").rules[0];
|
||||
helperNode1.on("input", function(msg) {
|
||||
try {
|
||||
msg.payload.should.equal("changed");
|
||||
@@ -118,6 +119,9 @@ describe('change Node', function() {
|
||||
helper.load(changeNode, flow, function() {
|
||||
var changeNode1 = helper.getNode("changeNode1");
|
||||
var helperNode1 = helper.getNode("helperNode1");
|
||||
var rule = helper.getNode("changeNode1").rules[0];
|
||||
rule.t.should.eql('set');
|
||||
rule.tot.should.eql('msg');
|
||||
helperNode1.on("input", function(msg) {
|
||||
try {
|
||||
msg.foo.should.equal("bar");
|
||||
@@ -237,6 +241,44 @@ describe('change Node', function() {
|
||||
changeNode1.receive({pay:{load:"changeMe"}});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('changes the value to a number', function(done) {
|
||||
var flow = [{"id":"changeNode1","type":"change",rules:[{"t":"set","p":"payload","to":"123","tot":"num"}],"name":"changeNode","wires":[["helperNode1"]]},
|
||||
{id:"helperNode1", type:"helper", wires:[]}];
|
||||
helper.load(changeNode, flow, function() {
|
||||
var changeNode1 = helper.getNode("changeNode1");
|
||||
var helperNode1 = helper.getNode("helperNode1");
|
||||
helperNode1.on("input", function(msg) {
|
||||
try {
|
||||
msg.payload.should.eql(123);
|
||||
done();
|
||||
} catch(err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
changeNode1.receive({payload:""});
|
||||
});
|
||||
});
|
||||
it('changes the value to a js object', function(done) {
|
||||
var flow = [{"id":"changeNode1","type":"change",rules:[{"t":"set","p":"payload","to":'{"a":123}',"tot":"json"}],"name":"changeNode","wires":[["helperNode1"]]},
|
||||
{id:"helperNode1", type:"helper", wires:[]}];
|
||||
helper.load(changeNode, flow, function() {
|
||||
var changeNode1 = helper.getNode("changeNode1");
|
||||
var helperNode1 = helper.getNode("helperNode1");
|
||||
helperNode1.on("input", function(msg) {
|
||||
try {
|
||||
msg.payload.should.eql({a:123});
|
||||
done();
|
||||
} catch(err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
changeNode1.receive({payload:""});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
describe('#change', function() {
|
||||
it('changes the value of the message property', function(done) {
|
||||
@@ -347,7 +389,7 @@ describe('change Node', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('Reports invalid regex', function(done) {
|
||||
it('reports invalid regex', function(done) {
|
||||
var sinon = require('sinon');
|
||||
var flow = [{"id":"changeNode1","type":"change","action":"change","property":"payload","from":"\\+**+","to":"NUMBER","reg":true,"name":"changeNode","wires":[["helperNode1"]]},
|
||||
{id:"helperNode1", type:"helper", wires:[]}];
|
||||
@@ -363,6 +405,43 @@ describe('change Node', function() {
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
it('supports regex groups - new rule format', function(done) {
|
||||
var flow = [{"id":"changeNode1","type":"change",rules:[{"t":"change","p":"payload","from":"(Hello)","to":"$1-$1-$1","fromt":"re","tot":"str"}],"name":"changeNode","wires":[["helperNode1"]]},
|
||||
{id:"helperNode1", type:"helper", wires:[]}];
|
||||
helper.load(changeNode, flow, function() {
|
||||
var changeNode1 = helper.getNode("changeNode1");
|
||||
var helperNode1 = helper.getNode("helperNode1");
|
||||
helperNode1.on("input", function(msg) {
|
||||
try {
|
||||
msg.payload.should.equal("Hello-Hello-Hello World");
|
||||
done();
|
||||
} catch(err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
changeNode1.receive({payload:"Hello World"});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('changes the value - new rule format', function(done) {
|
||||
var flow = [{"id":"changeNode1","type":"change",rules:[{"t":"change","p":"payload","from":"ABC","to":"123","fromt":"str","tot":"str"}],"name":"changeNode","wires":[["helperNode1"]]},
|
||||
{id:"helperNode1", type:"helper", wires:[]}];
|
||||
helper.load(changeNode, flow, function() {
|
||||
var changeNode1 = helper.getNode("changeNode1");
|
||||
var helperNode1 = helper.getNode("helperNode1");
|
||||
helperNode1.on("input", function(msg) {
|
||||
try {
|
||||
msg.payload.should.equal("abc123abc");
|
||||
done();
|
||||
} catch(err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
changeNode1.receive({payload:"abcABCabc"});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("#delete", function() {
|
||||
|
@@ -434,7 +434,8 @@ describe('flows/util', function() {
|
||||
var diffResult = flowUtil.diffConfigs(originalConfig,changedConfig);
|
||||
diffResult.added.should.have.length(0);
|
||||
diffResult.changed.sort().should.eql(['2', 'sf1']);
|
||||
diffResult.removed.should.have.length(0);
|
||||
diffResult.removed.should.have.length(1);
|
||||
diffResult.removed.sort().should.eql(['sf1-2']);
|
||||
diffResult.rewired.should.have.length(0);
|
||||
diffResult.linked.sort().should.eql(["1","3"]);
|
||||
|
||||
|
@@ -110,6 +110,57 @@ describe("red/util", function() {
|
||||
cloned.req.should.equal(msg.req);
|
||||
cloned.res.should.equal(msg.res);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('getMessageProperty', function() {
|
||||
it('retrieves a simple property', function() {
|
||||
var v = util.getMessageProperty({a:"foo"},"msg.a");
|
||||
v.should.eql("foo");
|
||||
var v2 = util.getMessageProperty({a:"foo"},"a");
|
||||
v2.should.eql("foo");
|
||||
});
|
||||
it('should return undefined if property does not exist', function() {
|
||||
var v = util.getMessageProperty({a:"foo"},"msg.b");
|
||||
should.not.exist(v);
|
||||
});
|
||||
it('should throw error if property parent does not exist', function() {
|
||||
/*jshint immed: false */
|
||||
(function() {
|
||||
util.getMessageProperty({a:"foo"},"msg.a.b.c");
|
||||
}).should.throw();
|
||||
})
|
||||
});
|
||||
|
||||
describe('setMessageProperty', function() {
|
||||
it('sets a property', function() {
|
||||
var msg = {a:"foo"};
|
||||
util.setMessageProperty(msg,"msg.a","bar");
|
||||
msg.a.should.eql('bar');
|
||||
});
|
||||
it('sets a deep level property', function() {
|
||||
var msg = {a:{b:{c:"foo"}}};
|
||||
util.setMessageProperty(msg,"msg.a.b.c","bar");
|
||||
msg.a.b.c.should.eql('bar');
|
||||
});
|
||||
it('creates missing parent properties by default', function() {
|
||||
var msg = {a:{}};
|
||||
util.setMessageProperty(msg,"msg.a.b.c","bar");
|
||||
msg.a.b.c.should.eql('bar');
|
||||
})
|
||||
it('does not create missing parent properties', function() {
|
||||
var msg = {a:{}};
|
||||
util.setMessageProperty(msg,"msg.a.b.c","bar",false);
|
||||
should.not.exist(msg.a.b);
|
||||
})
|
||||
it('deletes property if value is undefined', function() {
|
||||
var msg = {a:{b:{c:"foo"}}};
|
||||
util.setMessageProperty(msg,"msg.a.b.c",undefined);
|
||||
should.not.exist(msg.a.b.c);
|
||||
})
|
||||
it('does not create missing parent properties if value is undefined', function() {
|
||||
var msg = {a:{}};
|
||||
util.setMessageProperty(msg,"msg.a.b.c",undefined);
|
||||
should.not.exist(msg.a.b);
|
||||
})
|
||||
})
|
||||
});
|
||||
|
Reference in New Issue
Block a user