|
@@ -3041,11 +3041,11 @@ describe( 'Renderer', () => {
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
// #1560
|
|
// #1560
|
|
|
- describe( 'direct attributes manipulation', () => {
|
|
|
|
|
- it( 'should rerender element if its attribute was removed before rendering', () => {
|
|
|
|
|
|
|
+ describe( 'attributes manipulation on replaced element', () => {
|
|
|
|
|
+ it( 'should rerender element if it was removed after having its attributes removed (attribute)', () => {
|
|
|
const writer = new DowncastWriter();
|
|
const writer = new DowncastWriter();
|
|
|
|
|
|
|
|
- // 1. Setup.
|
|
|
|
|
|
|
+ // 1. Setup initial view/DOM.
|
|
|
viewRoot._appendChild( parse( '<container:p>1</container:p>' ) );
|
|
viewRoot._appendChild( parse( '<container:p>1</container:p>' ) );
|
|
|
|
|
|
|
|
const viewP = viewRoot.getChild( 0 );
|
|
const viewP = viewRoot.getChild( 0 );
|
|
@@ -3057,18 +3057,49 @@ describe( 'Renderer', () => {
|
|
|
|
|
|
|
|
expect( domRoot.innerHTML ).to.equal( '<p data-placeholder="Body">1</p>' );
|
|
expect( domRoot.innerHTML ).to.equal( '<p data-placeholder="Body">1</p>' );
|
|
|
|
|
|
|
|
- // 2. Transform.
|
|
|
|
|
|
|
+ // 2. Modify view.
|
|
|
writer.removeAttribute( 'data-placeholder', viewP );
|
|
writer.removeAttribute( 'data-placeholder', viewP );
|
|
|
|
|
|
|
|
viewRoot._removeChildren( 0, viewRoot.childCount );
|
|
viewRoot._removeChildren( 0, viewRoot.childCount );
|
|
|
|
|
|
|
|
viewRoot._appendChild( parse( '<container:p>1</container:p><container:p>2</container:p>' ) );
|
|
viewRoot._appendChild( parse( '<container:p>1</container:p><container:p>2</container:p>' ) );
|
|
|
|
|
|
|
|
|
|
+ renderer.markToSync( 'attributes', viewP );
|
|
|
renderer.markToSync( 'children', viewRoot );
|
|
renderer.markToSync( 'children', viewRoot );
|
|
|
renderer.render();
|
|
renderer.render();
|
|
|
|
|
|
|
|
expect( domRoot.innerHTML ).to.equal( '<p>1</p><p>2</p>' );
|
|
expect( domRoot.innerHTML ).to.equal( '<p>1</p><p>2</p>' );
|
|
|
} );
|
|
} );
|
|
|
|
|
+
|
|
|
|
|
+ it( 'should rerender element if it was removed after having its attributes removed (classes)', () => {
|
|
|
|
|
+ const writer = new DowncastWriter();
|
|
|
|
|
+
|
|
|
|
|
+ // 1. Setup initial view/DOM.
|
|
|
|
|
+ viewRoot._appendChild( parse( '<container:h1>h1</container:h1><container:p>p</container:p>' ) );
|
|
|
|
|
+
|
|
|
|
|
+ const viewP = viewRoot.getChild( 1 );
|
|
|
|
|
+
|
|
|
|
|
+ writer.addClass( [ 'cke-test1', 'cke-test2' ], viewP );
|
|
|
|
|
+
|
|
|
|
|
+ renderer.markToSync( 'children', viewRoot );
|
|
|
|
|
+ renderer.render();
|
|
|
|
|
+
|
|
|
|
|
+ expect( domRoot.innerHTML ).to.equal( '<h1>h1</h1><p class="cke-test1 cke-test2">p</p>' );
|
|
|
|
|
+
|
|
|
|
|
+ // 2. Modify view.
|
|
|
|
|
+ writer.removeClass( 'cke-test2', viewP );
|
|
|
|
|
+
|
|
|
|
|
+ viewRoot._removeChildren( 0, viewRoot.childCount );
|
|
|
|
|
+
|
|
|
|
|
+ viewRoot._appendChild( parse( '<container:h1>h1</container:h1>' +
|
|
|
|
|
+ '<container:p class="cke-test1">p</container:p><container:p>p2</container:p>' ) );
|
|
|
|
|
+
|
|
|
|
|
+ renderer.markToSync( 'attributes', viewP );
|
|
|
|
|
+ renderer.markToSync( 'children', viewRoot );
|
|
|
|
|
+ renderer.render();
|
|
|
|
|
+
|
|
|
|
|
+ expect( domRoot.innerHTML ).to.equal( '<h1>h1</h1><p class="cke-test1">p</p><p>p2</p>' );
|
|
|
|
|
+ } );
|
|
|
} );
|
|
} );
|
|
|
} );
|
|
} );
|
|
|
|
|
|