8
0
Pārlūkot izejas kodu

Tests: Minimal test case for #1560.

Krzysztof Krztoń 7 gadi atpakaļ
vecāks
revīzija
9f9fb2ad69
1 mainītis faili ar 32 papildinājumiem un 0 dzēšanām
  1. 32 0
      packages/ckeditor5-engine/tests/view/renderer.js

+ 32 - 0
packages/ckeditor5-engine/tests/view/renderer.js

@@ -17,6 +17,7 @@ import DocumentSelection from '../../src/view/documentselection';
 import DomConverter from '../../src/view/domconverter';
 import Renderer from '../../src/view/renderer';
 import DocumentFragment from '../../src/view/documentfragment';
+import DowncastWriter from '../../src/view/downcastwriter';
 import CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';
 import { parse, setData as setViewData, getData as getViewData } from '../../src/dev-utils/view';
 import { INLINE_FILLER, INLINE_FILLER_LENGTH, isBlockFiller, BR_FILLER } from '../../src/view/filler';
@@ -3038,6 +3039,37 @@ describe( 'Renderer', () => {
 				expect( domRoot.innerHTML ).to.equal( '<p><a href="#href">Foo<i>Bar</i></a></p>' );
 			} );
 		} );
+
+		// #1560
+		describe( 'direct attributes manipulation', () => {
+			it( 'should rerender element if its attribute was removed before rendering', () => {
+				const writer = new DowncastWriter();
+
+				// 1. Setup.
+				viewRoot._appendChild( parse( '<container:p>1</container:p>' ) );
+
+				const viewP = viewRoot.getChild( 0 );
+
+				writer.setAttribute( 'data-placeholder', 'Body', viewP );
+
+				renderer.markToSync( 'children', viewRoot );
+				renderer.render();
+
+				expect( domRoot.innerHTML ).to.equal( '<p data-placeholder="Body">1</p>' );
+
+				// 2. Transform.
+				writer.removeAttribute( 'data-placeholder', viewP );
+
+				viewRoot._removeChildren( 0, viewRoot.childCount );
+
+				viewRoot._appendChild( parse( '<container:p>1</container:p><container:p>2</container:p>' ) );
+
+				renderer.markToSync( 'children', viewRoot );
+				renderer.render();
+
+				expect( domRoot.innerHTML ).to.equal( '<p>1</p><p>2</p>' );
+			} );
+		} );
 	} );
 
 	describe( '#922', () => {