瀏覽代碼

Add tests for getData() markers in dev-utils/model.js.

Maciej Gołaszewski 7 年之前
父節點
當前提交
ae04bc1079
共有 2 個文件被更改,包括 23 次插入10 次删除
  1. 1 10
      packages/ckeditor5-engine/src/dev-utils/model.js
  2. 22 0
      packages/ckeditor5-engine/tests/dev-utils/model.js

+ 1 - 10
packages/ckeditor5-engine/src/dev-utils/model.js

@@ -258,18 +258,9 @@ export function stringify( node, selectionOrPositionOrRange = null, markers = nu
 
 		const markerRange = data.markerRange;
 
-		// Marker that is collapsed has consumable build differently that non-collapsed one.
-		// For more information see `addMarker` event description.
-		// If marker's range is collapsed - check if it can be consumed.
-		if ( markerRange.isCollapsed && !conversionApi.consumable.consume( markerRange, evt.name ) ) {
-			return;
-		}
-
 		// If marker's range is not collapsed - consume all items inside.
 		for ( const value of markerRange ) {
-			if ( !conversionApi.consumable.consume( value.item, evt.name ) ) {
-				return;
-			}
+			conversionApi.consumable.consume( value.item, evt.name );
 		}
 
 		const mapper = conversionApi.mapper;

+ 22 - 0
packages/ckeditor5-engine/tests/dev-utils/model.js

@@ -79,6 +79,28 @@ describe( 'model test utils', () => {
 				getData( { invalid: 'document' } );
 			} ).to.throw( TypeError, 'Model needs to be an instance of module:engine/model/model~Model.' );
 		} );
+
+		describe( 'markers', () => {
+			it( 'should stringify collapsed marker', () => {
+				setData( model, '<paragraph>bar</paragraph>' );
+
+				model.markers._set( 'foo', new Range( Position._createAt( document.getRoot(), 0 ) ) );
+
+				expect( getData( model, { convertMarkers: true, withoutSelection: true } ) )
+					.to.equal( '<foo:start></foo:start><paragraph>bar</paragraph>' );
+			} );
+
+			it( 'should stringify non-collapsed marker', () => {
+				setData( model, '<paragraph>bar</paragraph>' );
+
+				const markerRange = new Range( Position._createAt( document.getRoot(), 0 ), Position._createAt( document.getRoot(), 1 ) );
+
+				model.markers._set( 'foo', markerRange );
+
+				expect( getData( model, { convertMarkers: true, withoutSelection: true } ) )
+					.to.equal( '<foo:start></foo:start><paragraph>bar</paragraph><foo:end></foo:end>' );
+			} );
+		} );
 	} );
 
 	describe( 'setData', () => {