8
0
Просмотр исходного кода

Added tests to treeView.Node#remove().

Szymon Kupś 10 лет назад
Родитель
Сommit
b99aab3e67

+ 1 - 1
packages/ckeditor5-engine/src/treeview/element.js

@@ -115,7 +115,7 @@ export default class Element extends Node {
 	}
 
 	/**
-	 * Gets index of the given child node.
+	 * Gets index of the given child node. Returns `-1` if child node is not found.
 	 *
 	 * @param {core.treeView.Node} node Child node.
 	 * @returns {Number} Index of the child node.

+ 3 - 0
packages/ckeditor5-engine/src/treeview/node.js

@@ -115,6 +115,9 @@ export default class Node {
 		this._treeView = treeView;
 	}
 
+	/**
+	 * Removes node from parent.
+	 */
 	remove() {
 		this.parent.removeChildren( this.getIndex() );
 	}

+ 21 - 0
packages/ckeditor5-engine/tests/treeview/node.js

@@ -115,6 +115,27 @@ describe( 'Node', () => {
 		} );
 	} );
 
+	describe( 'remove', () => {
+		it( 'should remove node from its parent', () => {
+			const char = new Text( 'a' );
+			const parent = new Element( 'p', null, [ char ] );
+			char.remove();
+
+			expect( parent.getChildIndex( char ) ).to.equal( -1 );
+		} );
+
+		it( 'uses parent.removeChildren method', () => {
+			const char = new Text( 'a' );
+			const parent = new Element( 'p', null, [ char ] );
+			const removeChildrenSpy = sinon.spy( parent, 'removeChildren' );
+			const index = char.getIndex();
+			char.remove();
+			removeChildrenSpy.restore();
+			sinon.assert.calledOnce( removeChildrenSpy );
+			sinon.assert.calledWithExactly( removeChildrenSpy, index );
+		} );
+	} );
+
 	describe( 'change event', () => {
 		let root, text, img;
 		let rootChangeSpy;