Browse Source

Tests: Add test for calling a post-fixers on model changes.

Maciej Gołaszewski 7 years ago
parent
commit
19edcccacc
1 changed files with 29 additions and 0 deletions
  1. 29 0
      packages/ckeditor5-engine/tests/view/view/view.js

+ 29 - 0
packages/ckeditor5-engine/tests/view/view/view.js

@@ -396,6 +396,35 @@ describe( 'view', () => {
 		} );
 	} );
 
+	describe( 'editing controller integration', () => {
+		it( 'should call post-fixers once if rendering model changes (_disableRendering integration)', () => {
+			const postFixerSpy = sinon.spy( () => false );
+			const changeSpy = sinon.spy();
+			const eventSpy = sinon.spy();
+
+			viewDocument.registerPostFixer( postFixerSpy );
+
+			view.on( 'render', eventSpy );
+
+			// This is set in editing controller on `model#_beforeChanges` event
+			view._renderingDisabled = true;
+
+			view.change( changeSpy );
+			view.change( changeSpy );
+			view.change( changeSpy );
+
+			// This is set in editing controller on `model#_afterChanges` event
+			view._renderingDisabled = false;
+			view.render();
+
+			sinon.assert.calledOnce( postFixerSpy );
+			sinon.assert.calledThrice( changeSpy );
+			sinon.assert.calledOnce( eventSpy );
+
+			sinon.assert.callOrder( changeSpy, postFixerSpy, eventSpy );
+		} );
+	} );
+
 	describe( 'view and DOM integration', () => {
 		it( 'should remove content of the DOM', () => {
 			const domDiv = createElement( document, 'div', { id: 'editor' }, [