Fix CSV node to handle headers with quotes and spaces

This is a breaking change so needs thinking about
Includes updated tests
This commit is contained in:
Dave Conway-Jones
2022-10-19 09:19:54 +01:00
parent 5b27bcd781
commit 501c78666d
2 changed files with 58 additions and 36 deletions

View File

@@ -138,21 +138,22 @@ describe('CSV node', function() {
});
});
it('should remove quotes and whitespace from template', function(done) {
var flow = [ { id:"n1", type:"csv", temp:'"a", "b" , " c "," d " ', 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: 1, b: 2, c: 3, d: 4 });
check_parts(msg, 0, 1);
done();
});
var testString = "1,2,3,4"+String.fromCharCode(10);
n1.emit("input", {payload:testString});
});
});
// it('should remove quotes and whitespace from template', function(done) {
// var flow = [ { id:"n1", type:"csv", temp:'"a", "b" , " c "," d " ', 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) {
// console.log("GOT",msg.payload)
// msg.should.have.property('payload', { a: 1, b: 2, " c ": 3, " d ": 4 });
// check_parts(msg, 0, 1);
// done();
// });
// var testString = "1,2,3,4"+String.fromCharCode(10);
// n1.emit("input", {payload:testString});
// });
// });
it('should create column names if no template provided', function(done) {
var flow = [ { id:"n1", type:"csv", temp:'', wires:[["n2"]] },
@@ -195,8 +196,8 @@ describe('CSV node', function() {
var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2");
n2.on("input", function(msg) {
msg.should.have.property('payload', { a: 1, "b b":2, "c,c":3, "d, d": 4 });
msg.should.have.property('columns', 'a,b b,"c,c","d, d"');
msg.should.have.property('payload', { a: 1, "b b":2, "c,c":3, " d, d ": 4 });
msg.should.have.property('columns', 'a,b b,"c,c"," d, d "');
check_parts(msg, 0, 1);
done();
});
@@ -212,8 +213,8 @@ describe('CSV node', function() {
var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2");
n2.on("input", function(msg) {
msg.should.have.property('payload', { a: 1, "b b":2, "c,c":3, "d, d": 4 });
msg.should.have.property('columns', 'a,b b,"c,c","d, d"');
msg.should.have.property('payload', { a: 1, "b b":2, "c,c":3, " d, d ": 4 });
msg.should.have.property('columns', 'a,b b,"c,c"," d, d "');
check_parts(msg, 0, 1);
done();
});
@@ -229,8 +230,8 @@ describe('CSV node', function() {
var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2");
n2.on("input", function(msg) {
msg.should.have.property('payload', { a: 1, "b b":2, "c;c":3, "d, d": 4 });
msg.should.have.property('columns', 'a,b b,c;c,"d, d"');
msg.should.have.property('payload', { a: 1, "b b":2, "c;c":3, " d, d ": 4 });
msg.should.have.property('columns', 'a,b b,c;c," d, d "');
check_parts(msg, 0, 1);
done();
});
@@ -246,8 +247,8 @@ describe('CSV node', function() {
var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2");
n2.on("input", function(msg) {
msg.should.have.property('payload', { a: 1, "b b":2, "c/c":3, "d, d": 4 });
msg.should.have.property('columns', 'a,b b,c/c,"d, d"');
msg.should.have.property('payload', { a: 1, "b b":2, "c/c":3, " d, d ": 4 });
msg.should.have.property('columns', 'a,b b,c/c," d, d "');
check_parts(msg, 0, 1);
done();
});
@@ -263,8 +264,8 @@ describe('CSV node', function() {
var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2");
n2.on("input", function(msg) {
msg.should.have.property('payload', { a: 1, "b b":2, "c\\c":3, "d, d": 4 });
msg.should.have.property('columns', 'a,b b,c\\c,"d, d"');
msg.should.have.property('payload', { a: 1, "b b":2, "c\\c":3, " d, d ": 4 });
msg.should.have.property('columns', 'a,b b,c\\c," d, d "');
check_parts(msg, 0, 1);
done();
});
@@ -699,7 +700,6 @@ describe('CSV node', function() {
var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2");
n2.on("input", function(msg) {
// console.log("GOT",msg)
try {
msg.should.have.property('payload', '4,foo,true,,0,"Hello\nWorld",,,undefined,null,null\n');
done();
@@ -718,7 +718,6 @@ describe('CSV node', function() {
var n1 = helper.getNode("n1");
var n2 = helper.getNode("n2");
n2.on("input", function(msg) {
// console.log("GOT",msg)
try {
msg.should.have.property('payload', '1,foo,"ba""r","di,ng",,undefined,null\n');
done();