Parcourir la source

Tests: Added unit test for verifying that the same subsequent fake selections sets do not cause unnecessary DOM selection changes.

Marek Lewandowski il y a 6 ans
Parent
commit
e7f8a29608
1 fichiers modifiés avec 14 ajouts et 0 suppressions
  1. 14 0
      packages/ckeditor5-engine/tests/view/renderer.js

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

@@ -1804,6 +1804,20 @@ describe( 'Renderer', () => {
 				assertDomSelectionContents( domSelection, container, /^fake selection label$/ );
 				assertDomSelectionContents( domSelection, container, /^fake selection label$/ );
 			} );
 			} );
 
 
+			it( 'doesn\'t render the same selection multiple times', () => {
+				const createRangeSpy = sinon.spy( domRoot.ownerDocument, 'createRange' );
+
+				const label = 'subsequent fake selection calls';
+				selection._setTo( selection.getRanges(), { fake: true, label } );
+				renderer.render();
+				selection._setTo( selection.getRanges(), { fake: true, label } );
+				renderer.render();
+				selection._setTo( selection.getRanges(), { fake: true, label } );
+				renderer.render();
+
+				expect( createRangeSpy.callCount ).to.be.equal( 1 );
+			} );
+
 			it( 'should render   if no selection label is provided', () => {
 			it( 'should render   if no selection label is provided', () => {
 				selection._setTo( selection.getRanges(), { fake: true } );
 				selection._setTo( selection.getRanges(), { fake: true } );
 				renderer.render();
 				renderer.render();