Kaynağa Gözat

Added test for the tables with spanned cells.

Kuba Niegowski 5 yıl önce
ebeveyn
işleme
07b18442db

+ 72 - 0
packages/ckeditor5-table/tests/tableclipboard-paste.js

@@ -721,6 +721,78 @@ describe( 'table clipboard', () => {
 					] ) );
 				} );
 			} );
+
+			describe( 'with spanned cells', () => {
+				it( 'should replace the table structure', () => {
+					// +----+----+----+----+----+----+
+					// | 00 | 01 | 02           | 05 |
+					// +----+----+----+----+----+----+
+					// | 10 | 11      | 13 | 14 | 15 |
+					// +----+         +----+----+----+
+					// | 20 |         | 23      | 25 |
+					// +----+         +----+----+    +
+					// | 30 |         | 33      |    |
+					// +----+----+----+----+----+----+
+					// | 40      | 42 | 43 | 44      |
+					// +----+----+----+----+----+----+
+					setModelData( model, modelTable( [
+						[ '00', '01', { contents: '02', colspan: 3 }, '05' ],
+						[ '10', { contents: '11', colspan: 2, rowspan: 3 }, '13', '14', '15' ],
+						[ '20', { contents: '23', colspan: 2 }, { contents: '25', rowspan: 2 } ],
+						[ '30', { contents: '33', colspan: 2 } ],
+						[ { contents: '40', colspan: 2 }, '42', '43', { contents: '44', colspan: 2 } ]
+					] ) );
+
+					tableSelection.setCellSelection(
+						modelRoot.getNodeByPath( [ 0, 2, 1 ] ), // Cell 23.
+						modelRoot.getNodeByPath( [ 0, 2, 1 ] )
+					);
+
+					// +----+----+----+----+----+
+					// | aa      | ac | ad | ae |
+					// +         +    +----+----+
+					// |         |    | bd | be |
+					// +----+----+----+----+----+
+					// | ca      | cc | cd | ce |
+					// +----+----+----+----+----+
+					// | da           | dd | de |
+					// +----+----+----+----+    +
+					// | ea | eb | ec | ed |    |
+					// +----+----+----+----+----+
+					pasteTable( [
+						[ { contents: 'aa', colspan: 2, rowspan: 2 }, { contents: 'ac', rowspan: 2 }, 'ad', 'ae' ],
+						[ 'bd', 'be' ],
+						[ { contents: 'ca', colspan: 2 }, 'cc', 'cd', 'ce' ],
+						[ { contents: 'da', colspan: 3 }, 'dd', { contents: 'de', rowspan: 2 } ],
+						[ 'ea', 'eb', 'ec', 'ed' ]
+					] );
+
+					// +----+----+----+----+----+----+----+----+
+					// | 00 | 01 | 02           | 05 |    |    |
+					// +----+----+----+----+----+----+----+----+
+					// | 10 | 11      | 13 | 14 | 15 |    |    |
+					// +----+         +----+----+----+----+----+
+					// | 20 |         | aa      | ac | ad | ae |
+					// +----+         +         +    +----+----+
+					// | 30 |         |         |    | bd | be |
+					// +----+----+----+----+----+----+----+----+
+					// | 40      | 42 | ca      | cc | cd | ce |
+					// +----+----+----+----+----+----+----+----+
+					// |    |    |    | da           | dd | de |
+					// +----+----+----+----+----+----+----+    +
+					// |    |    |    | ea | eb | ec | ed |    |
+					// +----+----+----+----+----+----+----+----+
+					assertEqualMarkup( getModelData( model, { withoutSelection: true } ), modelTable( [
+						[ '00', '01', { contents: '02', colspan: 3 }, '05', '', '' ],
+						[ '10', { contents: '11', colspan: 2, rowspan: 3 }, '13', '14', '15', '', '' ],
+						[ '20', { contents: 'aa', colspan: 2, rowspan: 2 }, { contents: 'ac', rowspan: 2 }, 'ad', 'ae' ],
+						[ '30', 'bd', 'be' ],
+						[ { contents: '40', colspan: 2 }, '42', { contents: 'ca', colspan: 2 }, 'cc', 'cd', 'ce' ],
+						[ '', '', '', { contents: 'da', colspan: 3 }, 'dd', { contents: 'de', rowspan: 2 } ],
+						[ '', '', '', 'ea', 'eb', 'ec', 'ed' ]
+					] ) );
+				} );
+			} );
 		} );
 
 		describe( 'pasted table is equal to the selected area', () => {