2020-06-19 09:24:51 +03:00
|
|
|
const should = require('should');
|
|
|
|
const path = require('path');
|
2020-06-19 10:49:39 +03:00
|
|
|
const {readCSV} = require('../lib/parse');
|
2020-06-19 10:23:52 +03:00
|
|
|
const csvPath = path.join(__dirname, '/fixtures/');
|
2020-06-19 09:24:51 +03:00
|
|
|
|
2020-07-08 10:39:37 +03:00
|
|
|
describe('parse', function () {
|
|
|
|
it('read csv: empty file', async function () {
|
|
|
|
const result = await readCSV({
|
|
|
|
path: csvPath + 'empty.csv',
|
|
|
|
columnsToExtract: [{name: 'email', lookup: /email/i}]
|
|
|
|
});
|
|
|
|
|
|
|
|
should.exist(result);
|
|
|
|
result.length.should.eql(0);
|
|
|
|
});
|
|
|
|
|
2020-06-30 16:27:11 +03:00
|
|
|
it('read csv: one column', async function () {
|
|
|
|
const result = await readCSV({
|
2020-06-19 09:24:51 +03:00
|
|
|
path: csvPath + 'single-column-with-header.csv',
|
|
|
|
columnsToExtract: [{name: 'email', lookup: /email/i}]
|
2020-06-30 16:27:11 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
should.exist(result);
|
|
|
|
result.length.should.eql(2);
|
|
|
|
result[0].email.should.eql('jbloggs@example.com');
|
|
|
|
result[1].email.should.eql('test@example.com');
|
2020-06-19 09:24:51 +03:00
|
|
|
});
|
|
|
|
|
2020-06-30 16:27:11 +03:00
|
|
|
it('read csv: two columns, 1 filter', async function () {
|
|
|
|
const result = await readCSV({
|
2020-06-19 09:24:51 +03:00
|
|
|
path: csvPath + 'two-columns-with-header.csv',
|
|
|
|
columnsToExtract: [{name: 'email', lookup: /email/i}]
|
2020-06-30 16:27:11 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
should.exist(result);
|
|
|
|
result.length.should.eql(2);
|
|
|
|
result[0].email.should.eql('jbloggs@example.com');
|
|
|
|
result[1].email.should.eql('test@example.com');
|
|
|
|
should.not.exist(result[0].id);
|
2020-06-19 09:24:51 +03:00
|
|
|
});
|
|
|
|
|
2020-06-30 16:27:11 +03:00
|
|
|
it('read csv: two columns, 2 filters', async function () {
|
|
|
|
const result = await readCSV({
|
2020-06-19 09:24:51 +03:00
|
|
|
path: csvPath + 'two-columns-obscure-header.csv',
|
|
|
|
columnsToExtract: [
|
|
|
|
{name: 'email', lookup: /email/i},
|
|
|
|
{name: 'id', lookup: /id/i}
|
|
|
|
]
|
2020-06-30 16:27:11 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
should.exist(result);
|
|
|
|
result.length.should.eql(2);
|
|
|
|
result[0].email.should.eql('jbloggs@example.com');
|
|
|
|
result[0].id.should.eql('1');
|
|
|
|
result[1].email.should.eql('test@example.com');
|
|
|
|
result[1].id.should.eql('2');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('read csv: two columns with mapping', async function () {
|
|
|
|
const result = await readCSV({
|
|
|
|
path: csvPath + 'two-columns-mapping-header.csv',
|
|
|
|
mapping: {
|
|
|
|
email: 'correo_electronico',
|
|
|
|
name: 'nombre',
|
|
|
|
id: 'id'
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
should.exist(result);
|
|
|
|
result.length.should.eql(2);
|
|
|
|
result[0].email.should.eql('jbloggs@example.com');
|
|
|
|
result[0].name.should.eql('joe');
|
|
|
|
result[0].id.should.eql('1');
|
|
|
|
|
|
|
|
result[1].email.should.eql('test@example.com');
|
|
|
|
result[1].name.should.eql('test');
|
|
|
|
result[1].id.should.eql('2');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('read csv: two columns with partial mapping', async function () {
|
|
|
|
const result = await readCSV({
|
|
|
|
path: csvPath + 'two-columns-mapping-header.csv',
|
|
|
|
mapping: {
|
|
|
|
email: 'correo_electronico'
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
should.exist(result);
|
|
|
|
result.length.should.eql(2);
|
|
|
|
result[0].email.should.eql('jbloggs@example.com');
|
|
|
|
result[0].nombre.should.eql('joe');
|
|
|
|
result[0].id.should.eql('1');
|
|
|
|
|
|
|
|
result[1].email.should.eql('test@example.com');
|
|
|
|
result[1].nombre.should.eql('test');
|
|
|
|
result[1].id.should.eql('2');
|
|
|
|
});
|
2020-07-08 10:39:37 +03:00
|
|
|
|
2020-06-30 16:27:11 +03:00
|
|
|
it('read csv: two columns with empty mapping', async function () {
|
|
|
|
const result = await readCSV({
|
|
|
|
path: csvPath + 'two-columns-mapping-header.csv',
|
|
|
|
mapping: {}
|
|
|
|
});
|
|
|
|
|
|
|
|
should.exist(result);
|
|
|
|
result.length.should.eql(2);
|
|
|
|
result[0].correo_electronico.should.eql('jbloggs@example.com');
|
|
|
|
result[0].nombre.should.eql('joe');
|
|
|
|
result[0].id.should.eql('1');
|
|
|
|
|
|
|
|
result[1].correo_electronico.should.eql('test@example.com');
|
|
|
|
result[1].nombre.should.eql('test');
|
|
|
|
result[1].id.should.eql('2');
|
2020-06-19 09:24:51 +03:00
|
|
|
});
|
2020-08-17 08:57:49 +03:00
|
|
|
|
|
|
|
it('read csv: transforms empty values to nulls', async function () {
|
|
|
|
const result = await readCSV({
|
|
|
|
path: csvPath + 'multiple-records-with-empty-values.csv'
|
|
|
|
});
|
|
|
|
|
|
|
|
should.exist(result);
|
|
|
|
result.length.should.eql(2);
|
|
|
|
result[0].email.should.eql('jbloggs@example.com');
|
|
|
|
result[0].name.should.eql('Bob');
|
|
|
|
|
|
|
|
result[1].email.should.eql('test@example.com');
|
|
|
|
should.equal(result[1].name, null);
|
|
|
|
});
|
2020-06-19 09:24:51 +03:00
|
|
|
});
|