@@ -36,10 +36,8 @@ import {
3636import { stringify as stringifyView } from '../../src/dev-utils/view' ;
3737import { setData as setModelData } from '../../src/dev-utils/model' ;
3838
39- const highlightDescriptor = { class : 'marker' , priority : 1 } ;
40-
4139describe ( 'model-selection-to-view-converters' , ( ) => {
42- let dispatcher , mapper , modelDoc , modelRoot , modelSelection , viewDoc , viewRoot , viewSelection ;
40+ let dispatcher , mapper , modelDoc , modelRoot , modelSelection , viewDoc , viewRoot , viewSelection , highlightDescriptor ;
4341
4442 beforeEach ( ( ) => {
4543 modelDoc = new ModelDocument ( ) ;
@@ -55,6 +53,8 @@ describe( 'model-selection-to-view-converters', () => {
5553 mapper = new Mapper ( ) ;
5654 mapper . bindElements ( modelRoot , viewRoot ) ;
5755
56+ highlightDescriptor = { class : 'marker' , priority : 1 } ;
57+
5858 dispatcher = new ModelConversionDispatcher ( modelDoc , { mapper, viewSelection } ) ;
5959
6060 dispatcher . on ( 'insert:$text' , insertText ( ) ) ;
@@ -293,6 +293,30 @@ describe( 'model-selection-to-view-converters', () => {
293293 . to . equal ( '<div>foo<span class="marker2">[]</span>bar</div>' ) ;
294294 } ) ;
295295
296+ it ( 'in marker - should merge with the rest of attribute elements' , ( ) => {
297+ dispatcher . on ( 'addMarker:marker2' , highlightText ( data => ( { 'class' : data . markerName } ) ) ) ;
298+ dispatcher . on ( 'selectionMarker:marker2' , convertSelectionMarker ( data => ( { 'class' : data . markerName } ) ) ) ;
299+
300+ setModelData ( modelDoc , 'foobar' ) ;
301+ const marker = modelDoc . markers . set ( 'marker2' , ModelRange . createFromParentsAndOffsets ( modelRoot , 1 , modelRoot , 5 ) ) ;
302+
303+ modelSelection . setRanges ( [ new ModelRange ( ModelPosition . createAt ( modelRoot , 3 ) ) ] ) ;
304+
305+ // Remove view children manually (without firing additional conversion).
306+ viewRoot . removeChildren ( 0 , viewRoot . childCount ) ;
307+
308+ // Convert model to view.
309+ dispatcher . convertInsertion ( ModelRange . createIn ( modelRoot ) ) ;
310+ dispatcher . convertMarker ( 'addMarker' , marker . name , marker . getRange ( ) ) ;
311+
312+ const markers = Array . from ( modelDoc . markers . getMarkersAtPosition ( modelSelection . getFirstPosition ( ) ) ) ;
313+ dispatcher . convertSelection ( modelSelection , markers ) ;
314+
315+ // Stringify view and check if it is same as expected.
316+ expect ( stringifyView ( viewRoot , viewSelection , { showType : false } ) )
317+ . to . equal ( '<div>f<span class="marker2">oo{}ba</span>r</div>' ) ;
318+ } ) ;
319+
296320 it ( 'should do nothing if creator return null' , ( ) => {
297321 dispatcher . on ( 'selectionMarker:marker3' , convertSelectionMarker ( ( ) => {
298322
0 commit comments