lix-website/themes/lix/assets/bootstrap/node_modules/jsonexport/tests/options.js
2024-04-26 22:49:34 -06:00

272 lines
5.4 KiB
JavaScript

var chai = require('chai');
var expect = chai.expect;
var jsonexport = require('../lib/index');
var os = require('os');
describe('Options', () => {
it('rename', () => {
jsonexport([{
name: 'Bob',
lastname: 'Smith',
address: {
number: 1
}
}, {
name: 'James',
lastname: 'David',
test: true
}], {
headers: ['lastname', 'name', 'address.number'],
rename: ['Last Name', 'Name', 'Address Number']
}, (err, csv) => {
expect(csv).to.equal(`Last Name,Name,Address Number,test${os.EOL}Smith,Bob,1${os.EOL}David,James,,true`);
});
});
it('fillGaps', () => {
jsonexport([{
a: {
b: true,
c: [{
d: true
},
{
d: false
}
]
}
}], {
fillGaps: true
}, (err, csv) => {
expect(csv).to.equal(`a.b,a.c.d${os.EOL}true,true${os.EOL}true,false`);
});
});
it('fillTopRow', () => {
jsonexport([{
a: {
b: true,
c: [{
d: 1
},
{
d: 2
},
{
d: 3
},
{
d: 4
}
],
e: [{
f: 1
},
{
f: 2
}
]
}
}], {
fillTopRow: true,
}, (err, csv) => {
expect(csv).to.equal(`a.b,a.c.d,a.e.f${os.EOL}true,1,1${os.EOL},2,2${os.EOL},3,${os.EOL},4,`);
});
});
it('mapHeaders', () => {
jsonexport([{
a: true,
b: false
}], {
mapHeaders: h => `${h}|||`
}, (err, csv) => {
expect(csv).to.have.string('a|||');
});
});
it('headerPathString', () => {
jsonexport({
a: {
b: true
}
}, {
headerPathString: '|'
}, (err, csv) => {
expect(csv).to.have.string('a|b');
});
});
it('rowDelimiter', () => {
jsonexport({
a: true,
b: true
}, {
rowDelimiter: '|'
}, (err, csv) => {
expect(csv).to.have.string('a|true');
});
});
it('defaults', () => {
jsonexport({
a: true,
b: true
}, (err, csv) => {
expect(csv).to.have.string('a,true');
expect(csv).to.have.string('b,true');
});
});
it('textDelimiter with linebreak', () => {
jsonexport({
a: '\n',
b: true
}, {
textDelimiter: '|'
}, (err, csv) => {
expect(csv).to.have.string('|\n|');
});
});
it('textDelimiter with double quote', () => {
jsonexport({
a: '"',
b: true
}, {
textDelimiter: '"'
}, (err, csv) => {
expect(csv).to.have.string('a,""');
});
});
it('endOfLine', () => {
jsonexport({
a: true,
b: true
}, {
endOfLine: '|'
}, (err, csv) => {
expect(csv).to.have.string('a,true|b,true');
});
});
it('mainPathItem', () => {
// Object
jsonexport({
a: true,
b: true
}, {
mainPathItem: 'main'
}, (err, csv) => {
expect(csv).to.have.string(`main.a,true${os.EOL}main.b,true`);
});
// Array
jsonexport([{
a: true
}, {
b: true
}], {
mainPathItem: 'main'
}, (err, csv) => {
expect(csv).to.have.string('main.a,main.b');
});
});
it('mainPathItem', () => {
jsonexport({
a: [1, 2],
b: true
}, {
arrayPathString: '|'
}, (err, csv) => {
expect(csv).to.have.string('a,1|2');
});
});
it('booleanTrueString', () => {
jsonexport({
a: true,
b: true
}, {
booleanTrueString: 'test'
}, (err, csv) => {
expect(csv).to.have.string('a,test');
});
});
it('booleanFalseString', () => {
jsonexport({
a: false,
b: true
}, {
booleanFalseString: 'test'
}, (err, csv) => {
expect(csv).to.have.string('a,test');
});
});
it('includeHeaders', () => {
jsonexport([{
a: true
}, {
a: false
}], {
includeHeaders: false
}, (err, csv) => {
expect(csv).to.have.string(`true${os.EOL}false`);
});
});
it('verticalOutput', () => {
jsonexport({
a: true,
b: true
}, {
verticalOutput: false
}, (err, csv) => {
expect(csv).to.have.string('a,b');
});
});
describe('Type Handlers', () => {
it('String', () => {
jsonexport({
a: 'test',
b: true
}, {
typeHandlers: {
String: (value) => value + "|||"
}
}, (err, csv) => {
expect(csv).to.have.string('a,test|||');
});
});
it('Number', () => {
jsonexport({
a: 1,
b: true
}, {
typeHandlers: {
Number: (value) => value + "|||"
}
}, (err, csv) => {
expect(csv).to.have.string('a,1|||');
});
});
it('Boolean', () => {
jsonexport({
a: true,
b: true
}, {
typeHandlers: {
Boolean: (value, name) => value + "|||"
}
}, (err, csv) => {
expect(csv).to.have.string('a,true|||');
});
});
it('Date', (done) => {
var date = new Date();
jsonexport({
a: date,
b: true
}, {
typeHandlers: {
Object: (value, name) => {
if (value instanceof Date) return date + '|||';
return value;
}
}
}, (err, csv) => {
expect(csv).to.have.string('a,' + date + '|||');
done();
});
});
});
});