浏览代码

Fix: Editor element should be filled up with data upon destroy. Closes #19.

Aleksander Nowodzinski 8 年之前
父节点
当前提交
32fa056c53
共有 2 个文件被更改,包括 24 次插入5 次删除
  1. 2 3
      packages/ckeditor5-editor-inline/src/inline.js
  2. 22 2
      packages/ckeditor5-editor-inline/tests/inline.js

+ 2 - 3
packages/ckeditor5-editor-inline/src/inline.js

@@ -42,10 +42,9 @@ export default class InlineEditor extends StandardEditor {
 	 * @returns {Promise}
 	 */
 	destroy() {
-		this.updateEditorElement();
-
 		return this.ui.destroy()
-			.then( () => super.destroy() );
+			.then( () => super.destroy() )
+			.then( () => this.updateEditorElement() );
 	}
 
 	/**

+ 22 - 2
packages/ckeditor5-editor-inline/tests/inline.js

@@ -9,6 +9,8 @@ import InlineEditorUI from '../src/inlineeditorui';
 import InlineEditorUIView from '../src/inlineeditoruiview';
 
 import HtmlDataProcessor from '@ckeditor/ckeditor5-engine/src/dataprocessor/htmldataprocessor';
+import buildViewConverter from '@ckeditor/ckeditor5-engine/src/conversion/buildviewconverter';
+import buildModelConverter from '@ckeditor/ckeditor5-engine/src/conversion/buildmodelconverter';
 
 import InlineEditor from '../src/inline';
 import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
@@ -168,15 +170,33 @@ describe( 'InlineEditor', () => {
 			return InlineEditor.create( editorElement, { plugins: [ Paragraph ] } )
 				.then( newEditor => {
 					editor = newEditor;
+
+					const schema = editor.document.schema;
+
+					schema.registerItem( 'bold' );
+					schema.allow( { name: 'bold', inside: '$root' } );
+					schema.allow( { name: '$text', inside: 'bold' } );
+
+					buildViewConverter().for( editor.data.viewToModel )
+						.fromElement( 'b' )
+						.toElement( 'bold' );
+
+					buildModelConverter().for( editor.data.modelToView )
+						.fromElement( 'bold' )
+						.toElement( 'b' );
+
+					buildModelConverter().for( editor.editing.modelToView )
+						.fromElement( 'bold' )
+						.toElement( 'i-should-never-show-up-in-data' );
 				} );
 		} );
 
 		it( 'sets the data back to the editor element', () => {
-			editor.setData( '<p>foo</p>' );
+			editor.setData( '<p>a</p><b>b</b>' );
 
 			return editor.destroy()
 				.then( () => {
-					expect( editorElement.innerHTML ).to.equal( '<p>foo</p>' );
+					expect( editorElement.innerHTML ).to.equal( '<p>a</p><b>b</b>' );
 				} );
 		} );
 	} );