8
0
فهرست منبع

Fix: Prevent throwing error when logging MergeDelta with NoOperation.

Szymon Cofalik 8 سال پیش
والد
کامیت
ca526801a1

+ 4 - 1
packages/ckeditor5-engine/src/dev-utils/enableenginedebug.js

@@ -382,7 +382,10 @@ function enableLoggingTools() {
 
 	MergeDelta.prototype.toString = function() {
 		return getClassName( this ) + `( ${ this.baseVersion } ): ` +
-			this.position.toString();
+			( this.position ?
+				this.position.toString() :
+				`(move from ${ this.operations[ 0 ].sourcePosition })`
+			);
 	};
 
 	MoveDelta.prototype.toString = function() {

+ 19 - 0
packages/ckeditor5-engine/tests/dev-utils/enableenginedebug.js

@@ -397,6 +397,25 @@ describe( 'debug tools', () => {
 				expect( log.calledWithExactly( delta.toString() ) ).to.be.true;
 			} );
 
+			it( 'MergeDelta - NoOperation as second operation', () => {
+				const otherRoot = modelDoc.createRoot( '$root', 'otherRoot' );
+				const firstEle = new ModelElement( 'paragraph' );
+				const removedEle = new ModelElement( 'paragraph', null, [ new ModelText( 'foo' ) ] );
+
+				otherRoot.appendChildren( [ firstEle, removedEle ] );
+
+				const delta = new MergeDelta();
+				const move = new MoveOperation( ModelPosition.createAt( removedEle, 0 ), 3, ModelPosition.createAt( firstEle, 0 ), 0 );
+
+				delta.addOperation( move );
+				delta.addOperation( new NoOperation( 1 ) );
+
+				expect( delta.toString() ).to.equal( 'MergeDelta( 0 ): (move from otherRoot [ 1, 0 ])' );
+
+				delta.log();
+				expect( log.calledWithExactly( delta.toString() ) ).to.be.true;
+			} );
+
 			it( 'MoveDelta', () => {
 				const delta = new MoveDelta();
 				const move1 = new MoveOperation( ModelPosition.createAt( modelRoot, 0 ), 1, ModelPosition.createAt( modelRoot, 3 ), 0 );