Added Types and Unit tests
This commit is contained in:
75
test/index.js
Normal file
75
test/index.js
Normal file
@ -0,0 +1,75 @@
|
||||
const { expect, it } = require('@jest/globals');
|
||||
const { parseCSV } = require('./../src/index');
|
||||
|
||||
describe('parseCSV', () => {
|
||||
it('should parse a csv file', () => {
|
||||
const csv = 'Name,Age,Location\nDom,26,"Sydney, Australia"\nSteve,30,"New York, USA"';
|
||||
|
||||
parseCSV(csv, (headers,line,index) => {
|
||||
//Headers are parsed as arrays of strings
|
||||
expect(headers).toEqual([ 'Name', 'Age', 'Location' ]);
|
||||
|
||||
switch(index) {
|
||||
case 1:
|
||||
expect(line).toEqual([ 'Dom', '26', 'Sydney, Australia' ]);
|
||||
break;
|
||||
case 2:
|
||||
expect(line).toEqual([ 'Steve', '30', 'New York, USA' ]);
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
});
|
||||
|
||||
it('should skip blank lines', () => {
|
||||
//Line 2 is blank, Line 3 ends with a return carraige
|
||||
const csv = 'Name,Age,Location\n,,\nSteve,30,"New York, USA"\n\rDom,26,"Sydney, Australia"';
|
||||
|
||||
parseCSV(csv, (headers,line,index) => {
|
||||
expect(headers).toEqual([ 'Name', 'Age', 'Location' ]);
|
||||
|
||||
switch(index) {
|
||||
case 1:
|
||||
expect(line).toEqual([ 'Steve', '30', 'New York, USA' ]);
|
||||
break;
|
||||
case 2:
|
||||
expect(line).toEqual([ 'Dom', '26', 'Sydney, Australia' ]);
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
});
|
||||
});
|
||||
|
||||
it('should break when returning false', () => {
|
||||
const csv = 'Name,Age,Location\nDom,26,"Sydney, Australia"\nSteve,30,"New York, USA"';
|
||||
|
||||
parseCSV(csv, (headers,line,index) => {
|
||||
expect(line).toEqual([ 'Dom', '26', 'Sydney, Australia' ]);
|
||||
expect(index).not.toEqual(2);
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
it('should be allowed to not skip blanks', () => {
|
||||
|
||||
//Line 2 is blank, Line 3 ends with a return carraige
|
||||
const csv = 'Name,Age,Location\n,,\nSteve,30,"New York, USA"\n\rDom,26,"Sydney, Australia"';
|
||||
|
||||
parseCSV(csv, (headers,line,index) => {
|
||||
expect(headers).toEqual([ 'Name', 'Age', 'Location' ]);
|
||||
|
||||
switch(index) {
|
||||
case 1:
|
||||
expect(line).toEqual([ '', '', '' ]);
|
||||
break;
|
||||
case 2:
|
||||
expect(line).toEqual([ 'Steve', '30', 'New York, USA' ]);
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}, { skipBlanks: false });
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user