tui-grid
Version:
TOAST UI Grid : Powerful data grid control supported by TOAST UI
156 lines (122 loc) • 5.25 kB
JavaScript
;
var $ = require('jquery');
var util = require('common/clipboardUtil');
jasmine.getFixtures().fixturesPath = 'base/';
describe('common/clipboardUtil', function() {
var customLFSubChar = util.CUSTOM_LF_SUBCHAR;
var customCRSubChar = util.CUSTOM_CR_SUBCHAR;
var input, output;
describe('convertTableToData', function() {
beforeEach(function() {
jasmine.getFixtures().fixturesPath = 'base/';
loadFixtures('test/unit/fixtures/clipboard.html');
});
it('Table have unmerged cell.', function() {
input = $('#excel-data')[0];
output = util.convertTableToData(input);
expect(output).toEqual([
['cell1', 'cell2'],
['cell3', 'cell4']
]);
});
it('Table have rowspan cell.', function() {
input = $('#rowspan-excel-data')[0];
output = util.convertTableToData(input);
expect(output).toEqual([
['cell1', 'cell2'],
[' ', 'cell4']
]);
});
it('Table have colspan cell.', function() {
input = $('#colspan-excel-data')[0];
output = util.convertTableToData(input);
expect(output).toEqual([
['cell1', ' '],
['cell3', 'cell4']
]);
});
it('Table have rowspan, columspan cells.', function() {
input = $('#complex-excel-data')[0];
output = util.convertTableToData(input);
expect(output).toEqual([
['cell1', 'cell2', 'cell3'],
['cell4', ' ', 'cell6'],
['cell7', ' ', ' ']
]);
});
});
describe('convertTextToData', function() {
it('when the text include plain characters.', function() {
input = 'cell1\tcell2\ncell3\tcell4';
output = util.convertTextToData(input);
expect(output).toEqual([
['cell1', 'cell2'],
['cell3', 'cell4']
]);
});
it('when the text include double quotes.', function() {
input = '"cell1"\tcell2\ncell"3"\tcell4';
output = util.convertTextToData(input);
expect(output).toEqual([
['"cell1"', 'cell2'],
['cell"3"', 'cell4']
]);
});
it('when the text include double quotes and newline characters.', function() {
input = 'cell1\t"cell2"\n"cell\n3"\t"cell\n""4"""';
output = util.convertTextToData(input);
expect(output).toEqual([
['cell1', '"cell2"'],
['cell\n3', 'cell\n"4"']
]);
});
});
describe('addDoubleQuotes', function() {
it('when the text include newline characters, ' +
'the double quotes are added one by one.', function() {
input = 'test \n\n "add" ""test"" test';
output = util.addDoubleQuotes(input);
expect(output).toBe('"test \n\n ""add"" """"test"""" test"');
});
it('when the text don\'t include newline characters, ' +
'the double quotes are not added.', function() {
input = 'test """add test" test';
output = util.addDoubleQuotes(input);
expect(output).toBe(input);
});
});
describe('removeDoubleQuotes', function() {
it('when the text include substitution characters, ' +
'the double quotes are removed one by one.', function() {
input = '"test' + customLFSubChar + '""test""' + customLFSubChar + '"';
output = util.removeDoubleQuotes(input);
expect(output).toBe('test' + customLFSubChar + '"test"' + customLFSubChar);
});
it('when the text don\'t include substitution characters, ' +
'the double quotes are not removed.', function() {
input = '"test """test"" test"';
output = util.removeDoubleQuotes(input);
expect(output).toBe(input);
});
});
describe('replaceNewlineToSubchar', function() {
it('when the text include double quotes and LF characters, ' +
'LF characters in double quotes are replaced by substitution characters.', function() {
input = '"test\n""te""st"\ntest';
output = util.replaceNewlineToSubchar(input);
expect(output).toBe('"test' + customLFSubChar + '""te""st"\ntest');
});
it('when the text include double quotes and CR+LF characters, ' +
'CR+LF characters in double quotes are replaced by substitution characters.', function() {
input = '"test\r\n""te""st"\r\ntest';
output = util.replaceNewlineToSubchar(input);
expect(output).toBe('"test' + customCRSubChar + customLFSubChar + '""te""st"\r\ntest');
});
it('when the text include double quotes and don\'t include newline characters, ' +
'the text is not replaced.', function() {
input = '"test test"\ntest';
output = util.replaceNewlineToSubchar(input);
expect(output).toBe(input);
});
});
});