Browse Source

Fixed issues with view parse method in test utils.

Szymon Kupś 9 years ago
parent
commit
ffc1eaf603

+ 14 - 0
packages/ckeditor5-engine/tests/_utils-tests/view.js

@@ -519,5 +519,19 @@ describe( 'view test utils', () => {
 				parse( '<container:b:10:test></container:b:10:test>' );
 			} ).to.throw( Error );
 		} );
+
+		it( 'should use provided root element #1', () => {
+			const root = new Element( 'p' );
+			const data = parse( '<span>text</span>', { rootElement: root } );
+
+			expect( stringify( data ) ).to.equal( '<p><span>text</span></p>' );
+		} );
+
+		it( 'should use provided root element #2', () => {
+			const root = new Element( 'p' );
+			const data = parse( '<span>text</span><b>test</b>', { rootElement: root } );
+
+			expect( stringify( data ) ).to.equal( '<p><span>text</span><b>test</b></p>' );
+		} );
 	} );
 } );

+ 9 - 4
packages/ckeditor5-engine/tests/_utils/view.js

@@ -52,7 +52,7 @@ export function getData( treeView, options = {} ) {
 		getData._stringify( root, null, stringifyOptions );
 }
 
-// Set stringify as private method inside getData - needed for testing/spying.
+// Set stringify as getData private method - needed for testing/spying.
 getData._stringify = stringify;
 
 /**
@@ -75,7 +75,7 @@ export function setData( treeView, data, options = {} ) {
 	}
 }
 
-// Set stringify as private method inside getData - needed for testing/spying.
+// Set parse as setData private method - needed for testing/spying.
 setData._parse = parse;
 
 /**
@@ -482,6 +482,11 @@ class ViewParser {
 		// Convert HTML string to DOM.
 		const domRoot = htmlProcessor.toDom( data );
 
+		// If root element is provided - clear it.
+		// if ( rootElement ) {
+		// 	rootElement.removeChildren( rootElement.getChildCount() );
+		// }
+
 		// Convert DOM to View.
 		return this._walkDom( domRoot, rootElement );
 	}
@@ -504,7 +509,7 @@ class ViewParser {
 
 			// If there is only one element inside DOM DocumentFragment - use it as root.
 			if ( !isDomElement && length == 1 ) {
-				return this._walkDom( domNode.childNodes[ 0 ] );
+				return this._walkDom( domNode.childNodes[ 0 ], rootElement );
 			}
 
 			let viewElement;
@@ -513,7 +518,7 @@ class ViewParser {
 				viewElement = this._convertElement( domNode );
 
 				if ( rootElement ) {
-					rootElement.appendChild( viewElement );
+					rootElement.appendChildren( viewElement );
 				}
 			} else {
 				viewElement = rootElement ? rootElement : new ViewDocumentFragment();