|
|
@@ -3046,14 +3046,16 @@ describe( 'ListEngine', () => {
|
|
|
'<listItem type="bulleted" indent="2">C</listItem>'
|
|
|
);
|
|
|
|
|
|
- editor.data.insertContent(
|
|
|
- parseModel(
|
|
|
- '<listItem type="bulleted" indent="0">X</listItem>' +
|
|
|
- '<listItem type="bulleted" indent="1">Y</listItem>',
|
|
|
- modelDoc.schema
|
|
|
- ),
|
|
|
- modelDoc.selection
|
|
|
- );
|
|
|
+ modelDoc.enqueueChanges( () => {
|
|
|
+ editor.data.insertContent(
|
|
|
+ parseModel(
|
|
|
+ '<listItem type="bulleted" indent="0">X</listItem>' +
|
|
|
+ '<listItem type="bulleted" indent="1">Y</listItem>',
|
|
|
+ modelDoc.schema
|
|
|
+ ),
|
|
|
+ modelDoc.selection
|
|
|
+ );
|
|
|
+ } );
|
|
|
|
|
|
expect( getModelData( modelDoc ) ).to.equal(
|
|
|
'<listItem indent="0" type="bulleted">A</listItem>' +
|
|
|
@@ -3071,10 +3073,12 @@ describe( 'ListEngine', () => {
|
|
|
'<listItem type="bulleted" indent="2">C</listItem>'
|
|
|
);
|
|
|
|
|
|
- editor.data.insertContent(
|
|
|
- new ModelElement( 'listItem', { type: 'bulleted', indent: '0' }, 'X' ),
|
|
|
- modelDoc.selection
|
|
|
- );
|
|
|
+ modelDoc.enqueueChanges( () => {
|
|
|
+ editor.data.insertContent(
|
|
|
+ new ModelElement( 'listItem', { type: 'bulleted', indent: '0' }, 'X' ),
|
|
|
+ modelDoc.selection
|
|
|
+ );
|
|
|
+ } );
|
|
|
|
|
|
expect( getModelData( modelDoc ) ).to.equal(
|
|
|
'<listItem indent="0" type="bulleted">A</listItem>' +
|
|
|
@@ -3091,10 +3095,12 @@ describe( 'ListEngine', () => {
|
|
|
'<listItem type="bulleted" indent="2">C</listItem>'
|
|
|
);
|
|
|
|
|
|
- editor.data.insertContent(
|
|
|
- new ModelText( 'X' ),
|
|
|
- modelDoc.selection
|
|
|
- );
|
|
|
+ modelDoc.enqueueChanges( () => {
|
|
|
+ editor.data.insertContent(
|
|
|
+ new ModelText( 'X' ),
|
|
|
+ modelDoc.selection
|
|
|
+ );
|
|
|
+ } );
|
|
|
|
|
|
expect( getModelData( modelDoc ) ).to.equal(
|
|
|
'<listItem indent="0" type="bulleted">A</listItem>' +
|
|
|
@@ -3345,6 +3351,48 @@ describe( 'ListEngine', () => {
|
|
|
expect( getViewData( editor.editing.view, { withoutSelection: true } ) )
|
|
|
.to.equal( '<ul><li>Foo<span></span><ul><li>Xxx</li><li>Yyy</li></ul></li></ul>' );
|
|
|
} );
|
|
|
+
|
|
|
+ describe( 'remove converter should properly handle ui elements', () => {
|
|
|
+ let uiElement, liFoo, liBar;
|
|
|
+
|
|
|
+ beforeEach( () => {
|
|
|
+ editor.setData( '<ul><li>Foo</li><li>Bar</li></ul>' );
|
|
|
+ liFoo = modelRoot.getChild( 0 );
|
|
|
+ liBar = modelRoot.getChild( 1 );
|
|
|
+
|
|
|
+ uiElement = new ViewUIElement( 'span' );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'ui element before <ul>', () => {
|
|
|
+ // Append ui element before <ul>.
|
|
|
+ viewRoot.insertChildren( 0, [ uiElement ] );
|
|
|
+
|
|
|
+ modelDoc.batch().remove( liFoo );
|
|
|
+
|
|
|
+ expect( getViewData( editor.editing.view, { withoutSelection: true } ) )
|
|
|
+ .to.equal( '<span></span><ul><li>Bar</li></ul>' );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'ui element before first <li>', () => {
|
|
|
+ // Append ui element before <ul>.
|
|
|
+ viewRoot.getChild( 0 ).insertChildren( 0, [ uiElement ] );
|
|
|
+
|
|
|
+ modelDoc.batch().remove( liFoo );
|
|
|
+
|
|
|
+ expect( getViewData( editor.editing.view, { withoutSelection: true } ) )
|
|
|
+ .to.equal( '<ul><span></span><li>Bar</li></ul>' );
|
|
|
+ } );
|
|
|
+
|
|
|
+ it( 'ui element in the middle of list', () => {
|
|
|
+ // Append ui element before <ul>.
|
|
|
+ viewRoot.getChild( 0 ).insertChildren( 1, [ uiElement ] );
|
|
|
+
|
|
|
+ modelDoc.batch().remove( liBar );
|
|
|
+
|
|
|
+ expect( getViewData( editor.editing.view, { withoutSelection: true } ) )
|
|
|
+ .to.equal( '<ul><li>Foo</li><span></span></ul>' );
|
|
|
+ } );
|
|
|
+ } );
|
|
|
} );
|
|
|
|
|
|
function getViewPosition( root, path ) {
|