/**
* Table.spec.js
* (c) 2015~ Summernote Team
* summernote may be freely distributed under the MIT license./
*/
import chai from 'chai';
import $ from 'jquery';
import range from '../../../../src/js/base/core/range';
import Table from '../../../../src/js/base/editing/Table';
var expect = chai.expect;
describe('base:editing.Table', () => {
var table = new Table();
describe('tableWorker', () => {
it('should create simple 1x1 table', () => {
var resultTable = table.createTable(1, 1);
expect(1).to.deep.equal(resultTable.rows.length);
expect(1).to.deep.equal(resultTable.rows[0].cells.length);
});
it('should delete simple 1x1 table', () => {
var $cont = $('
');
var $cell = $cont.find('td');
var rng = range.create($cell[0].firstChild, 1);
table.deleteTable(rng);
expect('').to.deep.equal($cont.html());
});
it('should add simple row to table on top', () => {
var $cont = $('');
var $cell = $cont.find('td');
var rng = range.create($cell[0].firstChild, 1);
table.addRow(rng, 'top');
expect('').to.equalsIgnoreCase($cont.html());
});
it('should add simple row to table on bottom', () => {
var $cont = $('');
var $cell = $cont.find('td');
var rng = range.create($cell[0].firstChild, 1);
table.addRow(rng, 'bottom');
expect('').to.equalsIgnoreCase($cont.html());
});
it('should add simple row to table on top between two rows', () => {
var htmlContent = '';
var $cont = $(htmlContent);
var $cell = $cont.find('#td2');
var rng = range.create($cell[0].firstChild, 1);
table.addRow(rng, 'top');
var resultTable = $('');
$(resultTable).append('
|
');
$(resultTable).append('content2 |
');
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add simple row to table on bottom between two rows', () => {
var baseTable = $('');
$(baseTable).append('content2 |
');
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#td1');
var rng = range.create($cell[0].firstChild, 1);
table.addRow(rng, 'bottom');
var resultTable = $('');
$(resultTable).append('
|
');
$(resultTable).append('content2 |
');
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add simple col to table on left between two cols', () => {
var baseTable = $('');
var baseTr = 'content1 | content2 |
';
baseTable.append(baseTr);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#td2');
var rng = range.create($cell[0].firstChild, 1);
table.addCol(rng, 'left');
var resultTable = $('');
$(resultTable).append('content1 |
| content2 |
');
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add simple col to table on right between two cols', () => {
var baseTable = $('');
var baseTr = 'content1 | content2 |
';
baseTable.append(baseTr);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#td1');
var rng = range.create($cell[0].firstChild, 1);
table.addCol(rng, 'right');
var resultTable = $('');
$(resultTable).append('content1 |
| content2 |
');
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should delete row to table between two other rows', () => {
var baseTable = $('');
var baseTr = 'content1 |
';
baseTr += 'content2 | ';
baseTr += 'content3 | ';
baseTable.append(baseTr);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#td2');
var rng = range.create($cell[0].firstChild, 1);
table.deleteRow(rng);
var resultTable = $('');
$(resultTable).append('content1 |
content3 |
');
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should delete col to table between two other cols', () => {
var baseTable = $('');
var baseTr = 'content1 | content2 | content3 |
';
baseTable.append(baseTr);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#td2');
var rng = range.create($cell[0].firstChild, 1);
table.deleteCol(rng);
var resultTable = $('');
$(resultTable).append('content1 | content3 |
');
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should delete first col to table with colspan in column with colspan', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col2 |
';
var baseTr2 = 'Col1 | Col2 | Col3 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td1');
var rng = range.create($cell[0].firstChild, 1);
table.deleteCol(rng);
var resultTable = $(' ');
var resultTr1 = ' | Col2 |
';
var resultTr2 = 'Col2 | Col3 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should delete second col to table with colspan in column', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col2 |
';
var baseTr2 = 'Col1 | Col2 | Col3 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr2td2');
var rng = range.create($cell[0].firstChild, 1);
table.deleteCol(rng);
var resultTable = $(' ');
var resultTr1 = 'Col1-Span | Col2 |
';
var resultTr2 = 'Col1 | Col3 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should delete second col to table with colspan in 3 columns', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col4 |
';
var baseTr2 = 'Col1 | Col2 | Col3 | Col4 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr2td2');
var rng = range.create($cell[0].firstChild, 1);
table.deleteCol(rng);
var resultTable = $(' ');
var resultTr1 = 'Col1-Span | Col4 |
';
var resultTr2 = 'Col1 | Col3 | Col4 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should delete first row to table with rowspan in line with rowspan', () => {
var baseTable = $('');
var baseTr1 = 'Row1-Span | Col2 |
';
var baseTr2 = 'Col2 |
';
var baseTr3 = 'Col1 | Col2 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
baseTable.append(baseTr3);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td1');
var rng = range.create($cell[0].firstChild, 1);
table.deleteRow(rng);
var resultTable = $(' ');
var resultTr1AndTr2 = ' | Col2 |
';
var resultTr3 = 'Col1 | Col2 |
';
resultTable.append(resultTr1AndTr2);
resultTable.append(resultTr3);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should delete second row to table with rowspan in line without rowspan', () => {
var baseTable = $('');
var baseTr1 = 'Row1-Span | Col2 |
';
var baseTr2 = 'Col2 |
';
var baseTr3 = 'Col2 |
';
var baseTr4 = 'Col1 | Col2 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
baseTable.append(baseTr3);
baseTable.append(baseTr4);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr2td2');
var rng = range.create($cell[0].firstChild, 1);
table.deleteRow(rng);
var resultTable = $('');
var resultTr1 = 'Row1-Span | Col2 |
';
var resultTr3 = 'Col2 |
';
var resultTr4 = 'Col1 | Col2 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr3);
resultTable.append(resultTr4);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should delete second col to table with rowspan in 2 rows', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col2 |
';
var baseTr2 = 'Col2 |
';
var baseTr3 = 'Col1 | Col2 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
baseTable.append(baseTr3);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td2');
var rng = range.create($cell[0].firstChild, 1);
table.deleteCol(rng);
var resultTable = $(' ');
var resultTr1 = 'Col1-Span |
';
var resultTr2 = '
';
var resultTr3 = 'Col1 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
resultTable.append(resultTr3);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should delete second col to table with rowspan in 2 rows on second row', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col2 |
';
var baseTr2 = 'Col2 |
';
var baseTr3 = 'Col1 | Col2 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
baseTable.append(baseTr3);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr2td2');
var rng = range.create($cell[0].firstChild, 1);
table.deleteCol(rng);
var resultTable = $(' ');
var resultTr1 = 'Col1-Span |
';
var resultTr2 = '
';
var resultTr3 = 'Col1 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
resultTable.append(resultTr3);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add row on bottom rowspan cell.', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col2 |
';
var baseTr2 = 'Col2 |
';
var baseTr3 = 'Col1 | Col2 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
baseTable.append(baseTr3);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr2td2');
var rng = range.create($cell[0].firstChild, 1);
table.addRow(rng);
var resultTable = $(' ');
var resultTr1 = 'Col1-Span | Col2 |
';
var resultTr2 = 'Col2 |
';
var resultTr3 = '
|
';
var resultTr4 = 'Col1 | Col2 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
resultTable.append(resultTr3);
resultTable.append(resultTr4);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add row on bottom colspan cell.', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span |
';
var baseTr2 = 'Col1 | Col2 |
';
var baseTr3 = 'Col1 | Col2 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
baseTable.append(baseTr3);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td1');
var rng = range.create($cell[0].firstChild, 1);
table.addRow(rng, 'bottom');
var resultTable = $(' ');
var resultTr1 = 'Col1-Span |
';
var resultTr2 = '
|
';
var resultTr3 = 'Col1 | Col2 |
';
var resultTr4 = 'Col1 | Col2 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
resultTable.append(resultTr3);
resultTable.append(resultTr4);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add row above rowspan cell.', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col2 |
';
var baseTr2 = 'Col1 |
';
var baseTr3 = 'Col1 | Col2 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
baseTable.append(baseTr3);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td1');
var rng = range.create($cell[0].firstChild, 1);
table.addRow(rng, 'top');
var resultTable = $(' ');
var resultTr1 = '
|
|
';
var resultTr2 = 'Col1-Span | Col2 |
';
var resultTr3 = 'Col1 |
';
var resultTr4 = 'Col1 | Col2 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
resultTable.append(resultTr3);
resultTable.append(resultTr4);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add row on bottom rowspan cell and with aditional column.', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col2 |
';
var baseTr2 = 'Col1 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td1');
var rng = range.create($cell[0].firstChild, 1);
table.addRow(rng, 'bottom');
var resultTable = $(' ');
var resultTr1 = 'Col1-Span | Col2 |
';
var resultTr2 = 'Col1 |
';
var resultTr3 = '
|
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
resultTable.append(resultTr3);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add column on right having rowspan cell and with aditional column.', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col2 |
';
var baseTr2 = 'Col1 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td2');
var rng = range.create($cell[0].firstChild, 1);
table.addCol(rng, 'right');
var resultTable = $(' ');
var resultTr1 = 'Col1-Span | Col2 |
|
';
var resultTr2 = 'Col1 |
|
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add column on right having rowspan cell and with aditional column with focus on rowspan column.', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1-Span | Col2 |
';
var baseTr2 = 'Col1 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td1');
var rng = range.create($cell[0].firstChild, 1);
table.addCol(rng, 'right');
var resultTable = $(' ');
var resultTr1 = 'Col1-Span |
| Col2 |
';
var resultTr2 = 'Col1 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should remove column after colspan column.', () => {
var baseTable = $(' ');
var baseTr1 = 'Col1 | Col2-Span | Col4 |
';
var baseTr2 = 'Col1 | Col2 | Col3 | Col4 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td4');
var rng = range.create($cell[0].firstChild, 1);
table.deleteCol(rng);
var resultTable = $(' ');
var resultTr1 = 'Col1 | Col2-Span |
';
var resultTr2 = 'Col1 | Col2 | Col3 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should remove column before colspan column.', () => {
var baseTable = $(' ');
var baseTr1 = 'TR1TD1 | TR1TD2-COLSPAN | ';
baseTr1 += 'TR1TD4 |
';
var baseTr2 = 'TR2TD1 | TR2TD2 | TR2TD3 | ';
baseTr2 += 'TR2TD4 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td1');
var rng = range.create($cell[0].firstChild, 1);
table.deleteCol(rng);
var resultTable = $(' ');
var resultTr1 = 'TR1TD2-COLSPAN | ';
resultTr1 += 'TR1TD4 |
';
var resultTr2 = 'TR2TD2 | TR2TD3 | TR2TD4 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
it('should add column before colspan column.', () => {
var baseTable = $(' ');
var baseTr1 = 'TR1TD1 | TR1TD2 |
';
var baseTr2 = 'TR2TD1 |
';
baseTable.append(baseTr1);
baseTable.append(baseTr2);
var htmlContent = '' + $(baseTable).html() + '
';
var $cont = $(htmlContent);
var $cell = $cont.find('#tr1td1');
var rng = range.create($cell[0].firstChild, 1);
table.addCol(rng, 'right');
var resultTable = $(' ');
var resultTr1 = 'TR1TD1 |
| TR1TD2 |
';
var resultTr2 = 'TR2TD1 |
';
resultTable.append(resultTr1);
resultTable.append(resultTr2);
var expectedResult = '' + $(resultTable).html() + '
';
expect(expectedResult).to.equalsIgnoreCase($cont.html());
});
});
});