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

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"');
});
});