8
0
Maciej Bukowski 8 лет назад
Родитель
Сommit
e075f0f896

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

@@ -484,7 +484,7 @@ function enableDocumentTools() {
 		this._appliedDeltas.push( delta.toJSON() );
 	};
 
-	ModelDocument.prototype.logAppliedDeltas = function() {
+	ModelDocument.prototype.getAppliedDeltas = function() {
 		return ( this._appliedDeltas || [] ).map( JSON.stringify ).join( LOG_SEPARATOR );
 	};
 

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

@@ -713,6 +713,55 @@ describe( 'debug tools', () => {
 		} );
 	} );
 
+	describe( 'should provide methods for delta replayer', () => {
+		it( 'getAppliedDeltas()', () => {
+			const modelDoc = new ModelDocument();
+
+			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 );
+			const remove = new RemoveOperation( ModelPosition.createBefore( removedEle ), 1, 1 );
+
+			delta.addOperation( move );
+			delta.addOperation( remove );
+
+			modelDoc.initializeDebugging();
+			modelDoc.addAppliedDelta( delta );
+
+			const stringifiedDeltas = modelDoc.getAppliedDeltas();
+
+			expect( stringifiedDeltas ).to.equal( JSON.stringify( delta.toJSON() ) );
+		} );
+
+		it( 'createReplayer()', () => {
+			const modelDoc = new ModelDocument();
+
+			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 );
+			const remove = new RemoveOperation( ModelPosition.createBefore( removedEle ), 1, 1 );
+
+			delta.addOperation( move );
+			delta.addOperation( remove );
+
+			const stringifiedDeltas = JSON.stringify( delta.toJSON() );
+
+			const deltaReplayer = modelDoc.createReplayer( stringifiedDeltas );
+
+			expect( deltaReplayer.getDeltasToReplay() ).to.deep.equal( [ JSON.parse( stringifiedDeltas ) ] );
+		} );
+	} );
+
 	function expectLog( expectedLogMsg ) {
 		expect( log.calledWithExactly( expectedLogMsg ) ).to.be.true;
 		log.reset();