|
|
@@ -155,6 +155,60 @@ describe( 'MergeCellCommand', () => {
|
|
|
[ { colspan: 2, contents: '<paragraph>[00</paragraph><paragraph>01]</paragraph>' } ]
|
|
|
] ) );
|
|
|
} );
|
|
|
+
|
|
|
+ it( 'should result in single empty paragraph if both cells are empty', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '[]', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { colspan: 2, contents: '<paragraph>[]</paragraph>' } ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should result in single paragraph (other cell is empty)', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ 'foo[]', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { colspan: 2, contents: '<paragraph>[foo]</paragraph>' } ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should result in single paragraph (selection cell is empty)', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '[]', 'foo' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { colspan: 2, contents: '<paragraph>[foo]</paragraph>' } ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should not merge other empty blocks to single block', () => {
|
|
|
+ model.schema.register( 'block', {
|
|
|
+ allowWhere: '$block',
|
|
|
+ allowContentOf: '$block',
|
|
|
+ isBlock: true
|
|
|
+ } );
|
|
|
+
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '<block>[]</block>', '<block></block>' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { colspan: 2, contents: '<block>[</block><block>]</block>' } ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
} );
|
|
|
} );
|
|
|
|
|
|
@@ -281,6 +335,60 @@ describe( 'MergeCellCommand', () => {
|
|
|
[ { colspan: 2, contents: '<paragraph>[00</paragraph><paragraph>01]</paragraph>' } ]
|
|
|
] ) );
|
|
|
} );
|
|
|
+
|
|
|
+ it( 'should result in single empty paragraph if both cells are empty', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '', '[]' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { colspan: 2, contents: '<paragraph>[]</paragraph>' } ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should result in single paragraph (other cell is empty)', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '', 'foo[]' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { colspan: 2, contents: '<paragraph>[foo]</paragraph>' } ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should result in single paragraph (selection cell is empty)', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ 'foo', '[]' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { colspan: 2, contents: '<paragraph>[foo]</paragraph>' } ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should not merge other empty blocks to single block', () => {
|
|
|
+ model.schema.register( 'block', {
|
|
|
+ allowWhere: '$block',
|
|
|
+ allowContentOf: '$block',
|
|
|
+ isBlock: true
|
|
|
+ } );
|
|
|
+
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '<block></block>', '<block>[]</block>' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { colspan: 2, contents: '<block>[</block><block>]</block>' } ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
} );
|
|
|
} );
|
|
|
|
|
|
@@ -421,6 +529,68 @@ describe( 'MergeCellCommand', () => {
|
|
|
] ) );
|
|
|
} );
|
|
|
|
|
|
+ it( 'should result in single empty paragraph if both cells are empty', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '[]', '' ],
|
|
|
+ [ '', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { rowspan: 2, contents: '[]' }, '' ],
|
|
|
+ [ '' ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should result in single paragraph (other cell is empty)', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ 'foo[]', '' ],
|
|
|
+ [ '', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { rowspan: 2, contents: '[foo]' }, '' ],
|
|
|
+ [ '' ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should result in single paragraph (selection cell is empty)', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '[]', '' ],
|
|
|
+ [ 'foo', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { rowspan: 2, contents: '[foo]' }, '' ],
|
|
|
+ [ '' ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should not merge other empty blocks to single block', () => {
|
|
|
+ model.schema.register( 'block', {
|
|
|
+ allowWhere: '$block',
|
|
|
+ allowContentOf: '$block',
|
|
|
+ isBlock: true
|
|
|
+ } );
|
|
|
+
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '<block>[]</block>', '' ],
|
|
|
+ [ '<block></block>', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { rowspan: 2, contents: '<block>[</block><block>]</block>' }, '' ],
|
|
|
+ [ '' ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
it( 'should remove empty row if merging table cells ', () => {
|
|
|
setData( model, modelTable( [
|
|
|
[ { rowspan: 2, contents: '00' }, '01[]', { rowspan: 3, contents: '02' } ],
|
|
|
@@ -595,6 +765,68 @@ describe( 'MergeCellCommand', () => {
|
|
|
] ) );
|
|
|
} );
|
|
|
|
|
|
+ it( 'should result in single empty paragraph if both cells are empty', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '', '' ],
|
|
|
+ [ '[]', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { rowspan: 2, contents: '[]' }, '' ],
|
|
|
+ [ '' ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should result in single paragraph (other cell is empty)', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '', '' ],
|
|
|
+ [ 'foo[]', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { rowspan: 2, contents: '[foo]' }, '' ],
|
|
|
+ [ '' ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should result in single paragraph (selection cell is empty)', () => {
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ 'foo', '' ],
|
|
|
+ [ '[]', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { rowspan: 2, contents: '[foo]' }, '' ],
|
|
|
+ [ '' ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'should not merge other empty blocks to single block', () => {
|
|
|
+ model.schema.register( 'block', {
|
|
|
+ allowWhere: '$block',
|
|
|
+ allowContentOf: '$block',
|
|
|
+ isBlock: true
|
|
|
+ } );
|
|
|
+
|
|
|
+ setData( model, modelTable( [
|
|
|
+ [ '<block></block>', '' ],
|
|
|
+ [ '<block>[]</block>', '' ]
|
|
|
+ ] ) );
|
|
|
+
|
|
|
+ command.execute();
|
|
|
+
|
|
|
+ expect( formatTable( getData( model ) ) ).to.equal( formattedModelTable( [
|
|
|
+ [ { rowspan: 2, contents: '<block>[</block><block>]</block>' }, '' ],
|
|
|
+ [ '' ]
|
|
|
+ ] ) );
|
|
|
+ } );
|
|
|
+
|
|
|
it( 'should properly merge cells in rows with spaned cells', () => {
|
|
|
setData( model, modelTable( [
|
|
|
[ { rowspan: 3, contents: '00' }, '11', '12', '13' ],
|