Преглед на файлове

Add tests case to increase CC when splitting inside list.

The else statement in viewToModelListItemChildrenConverter() for
checking conditions after split wasn't covered after fixing
autoparagraphing. This tests does the "improper" way of setting
modelCursor when splitting to allowed parent.
Maciej Gołaszewski преди 6 години
родител
ревизия
7942abc0fe
променени са 1 файла, в които са добавени 38 реда и са изтрити 0 реда
  1. 38 0
      packages/ckeditor5-list/tests/listediting.js

+ 38 - 0
packages/ckeditor5-list/tests/listediting.js

@@ -3869,6 +3869,44 @@ describe( 'ListEditing', () => {
 				'<listItem listIndent="2" listType="bulleted">C</listItem>'
 			);
 		} );
+
+		it( 'should cover else branch', () => {
+			setModelData( model,
+				'<listItem listType="bulleted" listIndent="0">A[]</listItem>' +
+				'<listItem listType="bulleted" listIndent="1">B</listItem>' +
+				'<listItem listType="bulleted" listIndent="2">C</listItem>'
+			);
+
+			editor.model.schema.register( 'splitBlock', { inheritAllFrom: '$block' } );
+
+			editor.conversion.for( 'downcast' ).elementToElement( { model: 'splitBlock', view: 'splitBlock' } );
+			editor.conversion.for( 'upcast' ).add( dispatcher => dispatcher.on( 'element:splitBlock', ( evt, data, conversionApi ) => {
+				conversionApi.consumable.consume( data.viewItem, { name: true } );
+
+				// Use split to allowed parent logic to simulate the "improper" use modelCursor after split (set.
+				const splitBlock = conversionApi.writer.createElement( 'splitBlock' );
+				const splitResult = conversionApi.splitToAllowedParent( splitBlock, data.modelCursor );
+
+				conversionApi.writer.insert( splitBlock, splitResult.position );
+
+				data.modelRange = conversionApi.writer.createRangeOn( splitBlock );
+				data.modelCursor = conversionApi.writer.createPositionAfter( splitBlock );
+			} ) );
+
+			const clipboard = editor.plugins.get( 'Clipboard' );
+
+			clipboard.fire( 'inputTransformation', {
+				content: parseView( '<ul><li>a<splitBlock></splitBlock>b</li></ul>' )
+			} );
+
+			expect( getModelData( model, { withoutSelection: true } ) ).to.equal(
+				'<listItem listIndent="0" listType="bulleted">Aa</listItem>' +
+				'<splitBlock></splitBlock>' +
+				'<listItem listIndent="0" listType="bulleted">b</listItem>' +
+				'<listItem listIndent="1" listType="bulleted">B</listItem>' +
+				'<listItem listIndent="2" listType="bulleted">C</listItem>'
+			);
+		} );
 	} );
 
 	describe( 'other', () => {