From 0f547e1da997f02af557407923fa14e2263f7199 Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Mon, 16 Sep 2019 15:45:30 +0200 Subject: [PATCH] Tests: Added unit test making sure that fake selection is still being correctly mapped, even if reused. --- tests/view/renderer.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/view/renderer.js b/tests/view/renderer.js index d4daf6af5..87150dae7 100644 --- a/tests/view/renderer.js +++ b/tests/view/renderer.js @@ -20,7 +20,7 @@ import Renderer from '../../src/view/renderer'; import DocumentFragment from '../../src/view/documentfragment'; import DowncastWriter from '../../src/view/downcastwriter'; -import { parse, setData as setViewData, getData as getViewData } from '../../src/dev-utils/view'; +import { parse, stringify, setData as setViewData, getData as getViewData } from '../../src/dev-utils/view'; import { INLINE_FILLER, INLINE_FILLER_LENGTH, isBlockFiller, BR_FILLER } from '../../src/view/filler'; import testUtils from '@ckeditor/ckeditor5-core/tests/_utils/utils'; import createViewRoot from './_utils/createroot'; @@ -1848,6 +1848,25 @@ describe( 'Renderer', () => { expect( createRangeSpy.callCount ).to.be.equal( 2 ); } ); + + it( 'correctly maps fake selection ', () => { + // See https://github.com/ckeditor/ckeditor5-engine/pull/1792#issuecomment-529814641 + const label = 'subsequent fake selection calls'; + const { view: newParagraph, selection: newSelection } = parse( '[baz]' ); + + viewRoot._appendChild( newParagraph ); + + selection._setTo( selection.getRanges(), { fake: true, label } ); + renderer.render(); + + selection._setTo( newSelection.getRanges(), { fake: true, label } ); + renderer.render(); + + const fakeSelectionContainer = domRoot.childNodes[ 1 ]; + const mappedSelection = renderer.domConverter.fakeSelectionToView( fakeSelectionContainer ); + + expect( stringify( viewRoot, mappedSelection ) ).to.be.equal( '

foo bar

[baz]

' ); + } ); } ); it( 'should render   if no selection label is provided', () => {