mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Add skip first n lines capability to csv node (#1535)
* Initial implementation of skip first lines for css node * add css skip lines tests
This commit is contained in:
committed by
Nick O'Leary
parent
161c7d30ca
commit
7c0b9ffe06
@@ -265,6 +265,94 @@ describe('CSV node', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('should skip several lines from start if requested', function(done) {
|
||||
var flow = [ { id:"n1", type:"csv", temp:"a,b,c,d", skip: 2, wires:[["n2"]] },
|
||||
{id:"n2", type:"helper"} ];
|
||||
helper.load(csvNode, flow, function() {
|
||||
var n1 = helper.getNode("n1");
|
||||
var n2 = helper.getNode("n2");
|
||||
n2.on("input", function(msg) {
|
||||
msg.should.have.property('payload', { a: 9, b: 0, c: "A", d: "B" });
|
||||
check_parts(msg, 0, 1);
|
||||
done();
|
||||
});
|
||||
var testString = "1,2,3,4"+String.fromCharCode(10)+"5,6,7,8"+String.fromCharCode(10)+"9,0,A,B"+String.fromCharCode(10);
|
||||
n1.emit("input", {payload:testString});
|
||||
});
|
||||
});
|
||||
|
||||
it('should skip several lines from start then use next line as a tempate', function(done) {
|
||||
var flow = [ { id:"n1", type:"csv", temp:"a,b,c,d", hdrin:true, skip: 2, wires:[["n2"]] },
|
||||
{id:"n2", type:"helper"} ];
|
||||
helper.load(csvNode, flow, function() {
|
||||
var n1 = helper.getNode("n1");
|
||||
var n2 = helper.getNode("n2");
|
||||
n2.on("input", function(msg) {
|
||||
msg.should.have.property('payload', { "9": "C", "0": "D", "A": "E", "B": "F" });
|
||||
check_parts(msg, 0, 1);
|
||||
done();
|
||||
});
|
||||
var testString = "1,2,3,4"+String.fromCharCode(10)+"5,6,7,8"+String.fromCharCode(10)+"9,0,A,B"+String.fromCharCode(10)+"C,D,E,F"+String.fromCharCode(10);
|
||||
n1.emit("input", {payload:testString});
|
||||
});
|
||||
});
|
||||
|
||||
it('should skip several lines from start and correct parts', function(done) {
|
||||
var flow = [ { id:"n1", type:"csv", temp:"a,b,c,d", skip: 2, wires:[["n2"]] },
|
||||
{id:"n2", type:"helper"} ];
|
||||
helper.load(csvNode, flow, function() {
|
||||
var n1 = helper.getNode("n1");
|
||||
var n2 = helper.getNode("n2");
|
||||
var c = 0;
|
||||
n2.on("input", function(msg) {
|
||||
if (c===0) {
|
||||
msg.should.have.property('payload', { a: 9, b: 0, c: "A", d: "B" });
|
||||
check_parts(msg, 0, 2);
|
||||
c = c+1;
|
||||
}
|
||||
else {
|
||||
msg.should.have.property('payload', { a: "C", b: "D", c: "E", d: "F" });
|
||||
check_parts(msg, 1, 2);
|
||||
done();
|
||||
}
|
||||
});
|
||||
var testString = "1,2,3,4"+String.fromCharCode(10)+"5,6,7,8"+String.fromCharCode(10)+"9,0,A,B"+String.fromCharCode(10)+"C,D,E,F"+String.fromCharCode(10);
|
||||
n1.emit("input", {payload:testString});
|
||||
});
|
||||
});
|
||||
|
||||
it('should be able to skip and then use the first of multiple parts as a template if parts are present', function(done) {
|
||||
var flow = [ { id:"n1", type:"csv", temp:"", hdrin:true, skip:2, wires:[["n2"]] },
|
||||
{id:"n2", type:"helper"} ];
|
||||
helper.load(csvNode, flow, function() {
|
||||
var n1 = helper.getNode("n1");
|
||||
var n2 = helper.getNode("n2");
|
||||
var c = 0;
|
||||
n2.on("input", function(msg) {
|
||||
if (c === 0) {
|
||||
msg.should.have.property('payload', { w: 1, x: 2, y: 3, z: 4 });
|
||||
check_parts(msg, 0, 2);
|
||||
c += 1;
|
||||
}
|
||||
else {
|
||||
msg.should.have.property('payload', { w: 5, x: 6, y: 7, z: 8 });
|
||||
check_parts(msg, 1, 2);
|
||||
done();
|
||||
}
|
||||
});
|
||||
var testStringA = "foo\n";
|
||||
var testStringB = "bar\n";
|
||||
var testString1 = "w,x,y,z\n";
|
||||
var testString2 = "1,2,3,4\n";
|
||||
var testString3 = "5,6,7,8\n";
|
||||
n1.emit("input", {payload:testStringA, parts:{id:"X", index:0, count:5}});
|
||||
n1.emit("input", {payload:testStringB, parts:{id:"X", index:1, count:5}});
|
||||
n1.emit("input", {payload:testString1, parts:{id:"X", index:2, count:5}});
|
||||
n1.emit("input", {payload:testString2, parts:{id:"X", index:3, count:5}});
|
||||
n1.emit("input", {payload:testString3, parts:{id:"X", index:4, count:5}});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('json object to csv', function() {
|
||||
|
Reference in New Issue
Block a user