47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
/* jshint node:true */
|
|
/* jshint esversion: 6 */
|
|
/* jshint -W030 */
|
|
|
|
var os = require('os');
|
|
var chai = require('chai');
|
|
var expect = chai.expect;
|
|
|
|
var escapeDelimiters = require('../lib/core/escape-delimiters')('"', '\n', os.EOL);
|
|
|
|
describe('escapeDelimiters', () => {
|
|
const mocks = {
|
|
simpleText: 'I am a "quoted" field',
|
|
simpleRow: 'I am a \n multi line field',
|
|
complexField: 'I am a \n multi line field containing "textDelimiters"',
|
|
alreadyEscaped: '"I contain "double quotes" everywhere !"',
|
|
forceEscape: 42
|
|
};
|
|
|
|
it('should escape textDelimiters', () => {
|
|
expect(escapeDelimiters(mocks.simpleText)).to.be.a.string;
|
|
expect(escapeDelimiters(mocks.simpleText)).to.be.equal('"I am a ""quoted"" field"');
|
|
});
|
|
|
|
it('should escape all textDelimiters', () => {
|
|
expect(escapeDelimiters(mocks.alreadyEscaped)).to.be.a.string;
|
|
expect(escapeDelimiters(mocks.alreadyEscaped)).to.be.equal('"""I contain ""double quotes"" everywhere !"""');
|
|
});
|
|
|
|
it('should escape rowDelimiters', () => {
|
|
expect(escapeDelimiters(mocks.simpleRow)).to.be.a.string;
|
|
expect(escapeDelimiters(mocks.simpleRow)).to.be.equal('"I am a \n multi line field"');
|
|
});
|
|
|
|
it('should escape both textDelimiters and rowDelimiters', () => {
|
|
expect(escapeDelimiters(mocks.complexField)).to.be.a.string;
|
|
expect(escapeDelimiters(mocks.complexField)).to.be.equal('"I am a \n multi line field containing ""textDelimiters"""');
|
|
});
|
|
|
|
it('should escape if forceTextDelimiter flag is true', () => {
|
|
var escapeDelimiters = require('../lib/core/escape-delimiters')('"', '\n', true);
|
|
|
|
expect(escapeDelimiters(mocks.forceEscape)).to.be.a.string;
|
|
expect(escapeDelimiters(mocks.forceEscape)).to.be.equal('"42"');
|
|
});
|
|
});
|