Ver Fonte

TreeView.getObserver should return observer instance ever time addObserver is called.

Piotr Jasiun há 9 anos atrás
pai
commit
fd1311e04a

+ 5 - 3
packages/ckeditor5-engine/src/treeview/treeview.js

@@ -108,11 +108,13 @@ export default class TreeView {
 	 * @returns {engine.treeView.observer.Observer} Added observer instance.
 	 */
 	addObserver( Observer ) {
-		if ( this._observers.has( Observer ) ) {
-			return;
+		let observer = this._observers.get( Observer );
+
+		if ( observer ) {
+			return observer;
 		}
 
-		const observer = new Observer( this );
+		observer = new Observer( this );
 
 		this._observers.set( Observer, observer );
 

+ 9 - 0
packages/ckeditor5-engine/tests/treeview/treeview/treeview.js

@@ -158,6 +158,15 @@ describe( 'TreeView', () => {
 			sinon.assert.calledOnce( observerMock.enable );
 		} );
 
+		it( 'should return observer instance ever time addObserver is called', () => {
+			const observerMock1 = treeView.addObserver( ObserverMock );
+			const observerMock2 = treeView.addObserver( ObserverMock );
+
+			expect( observerMock1 ).to.be.instanceof( ObserverMock );
+			expect( observerMock2 ).to.be.instanceof( ObserverMock );
+			expect( observerMock1 ).to.equals( observerMock2 );
+		} );
+
 		it( 'should instantiate one observer only once', () => {
 			treeView.addObserver( ObserverMockGlobalCount );
 			treeView.addObserver( ObserverMockGlobalCount );