瀏覽代碼

Tests and bugfixes.

Piotr Jasiun 9 年之前
父節點
當前提交
f77133fcc3
共有 2 個文件被更改,包括 60 次插入3 次删除
  1. 3 2
      packages/ckeditor5-engine/src/datacontroller.js
  2. 57 1
      packages/ckeditor5-engine/tests/datacontroller.js

+ 3 - 2
packages/ckeditor5-engine/src/datacontroller.js

@@ -16,6 +16,7 @@ import { convertText, convertToModelFragment } from './treecontroller/view-to-mo
 import Writer from './treeview/writer.js';
 import ViewDocumentFragment from './treeview/documentfragment.js';
 import DomConverter from './treeview/domconverter.js';
+import { NBSP_FILLER } from './treeview/filler.js';
 
 import ModelRange from './treemodel/range.js';
 import ModelPosition from './treemodel/position.js';
@@ -28,7 +29,7 @@ export default class DataController {
 
 		this._writer = new Writer();
 
-		this._domConverter = new DomConverter();
+		this._domConverter = new DomConverter( { blockFiller: NBSP_FILLER } );
 
 		this._processor = dataProcessor;
 
@@ -36,7 +37,7 @@ export default class DataController {
 			writer: this._writer,
 			mapper: this._mapper
 		} );
-		this.toView.on( 'insert:text', insertText() );
+		this.toView.on( 'insert:$text', insertText() );
 
 		this.toModel = new ViewConversionDispatcher( {
 			schema: modelDocument.schema

+ 57 - 1
packages/ckeditor5-engine/tests/datacontroller.js

@@ -12,8 +12,9 @@ import DataController from '/ckeditor5/engine/datacontroller.js';
 import HtmlDataProcessor from '/ckeditor5/engine/dataprocessor/HtmlDataProcessor.js';
 
 import BuildViewConverterFor  from '/ckeditor5/engine/treecontroller/view-converter-builder.js';
+import BuildModelConverterFor  from '/ckeditor5/engine/treecontroller/model-converter-builder.js';
 
-import { getData } from '/tests/engine/_utils/model.js';
+import { getData, setData } from '/tests/engine/_utils/model.js';
 
 describe( 'DataController', () => {
 	let modelDocument, htmlDataProcessor, data, schema;
@@ -71,4 +72,59 @@ describe( 'DataController', () => {
 				'<paragraph>foo<$text bold=true>bar</$text></paragraph>' );
 		} );
 	} );
+
+	describe( 'get', () => {
+		it( 'should get paragraph with text', () => {
+			setData( modelDocument, '<paragraph>foo</paragraph>' );
+
+			BuildModelConverterFor( data.toView ).fromElement( 'paragraph' ).toElement( 'p' );
+
+			expect( data.get() ).to.equal( '<p>foo</p>' );
+		} );
+
+		it( 'should get empty paragraph', () => {
+			setData( modelDocument, '<paragraph></paragraph>' );
+
+			BuildModelConverterFor( data.toView ).fromElement( 'paragraph' ).toElement( 'p' );
+
+			expect( data.get() ).to.equal( '<p>&nbsp;</p>' );
+		} );
+
+		it( 'should get two paragraphs', () => {
+			setData( modelDocument, '<paragraph>foo</paragraph><paragraph>bar</paragraph>' );
+
+			BuildModelConverterFor( data.toView ).fromElement( 'paragraph' ).toElement( 'p' );
+
+			expect( data.get() ).to.equal( '<p>foo</p><p>bar</p>' );
+		} );
+
+		it( 'should get text directly in root', () => {
+			setData( modelDocument, 'foo' );
+
+			expect( data.get() ).to.equal( 'foo' );
+		} );
+
+		it( 'should get paragraphs without bold', () => {
+			setData( modelDocument, '<paragraph>foo<$text bold=true>bar</$text></paragraph>' );
+
+			BuildModelConverterFor( data.toView ).fromElement( 'paragraph' ).toElement( 'p' );
+
+			expect( data.get() ).to.equal( '<p>foobar</p>' );
+		} );
+
+		it( 'should get paragraphs with bold', () => {
+			setData( modelDocument, '<paragraph>foo<$text bold=true>bar</$text></paragraph>' );
+
+			BuildModelConverterFor( data.toView ).fromElement( 'paragraph' ).toElement( 'p' );
+			BuildModelConverterFor( data.toView ).fromAttribute( 'bold' ).toElement( 'b' );
+
+			expect( data.get() ).to.equal( '<p>foo<b>bar</b></p>' );
+		} );
+	} );
+
+	describe( 'destroy', () => {
+		it( 'should be there for you', () => {
+			expect( data ).to.respondTo( 'destroy' );
+		} );
+	} );
 } );