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

Added failing test for stopListening method.

Oskar Wróbel 9 лет назад
Родитель
Сommit
cf8af96f9d
1 измененных файлов с 44 добавлено и 0 удалено
  1. 44 0
      packages/ckeditor5-ui/tests/domemittermixin.js

+ 44 - 0
packages/ckeditor5-ui/tests/domemittermixin.js

@@ -197,6 +197,50 @@ describe( 'DOMEmitterMixin', () => {
 			expect( domEmitter ).to.not.have.property( '_listeningTo' );
 		} );
 
+		it( 'should stop listening to everything what left', () => {
+			const spy1 = testUtils.sinon.spy();
+			const spy2 = testUtils.sinon.spy();
+			const spy3 = testUtils.sinon.spy();
+			const spy4 = testUtils.sinon.spy();
+
+			const node1 = document.createElement( 'div' );
+			const node2 = document.createElement( 'div' );
+
+			domEmitter.listenTo( node1, 'event1', spy1 );
+			domEmitter.listenTo( node1, 'event2', spy2 );
+			domEmitter.listenTo( node2, 'event1', spy3 );
+			domEmitter.listenTo( node2, 'event2', spy4 );
+
+			expect( domEmitter ).to.have.property( '_listeningTo' );
+
+			domEmitter.stopListening( node1, 'event1', spy1 );
+			domEmitter.stopListening( node2, 'event1' );
+
+			node1.dispatchEvent( new Event( 'event1' ) );
+			node1.dispatchEvent( new Event( 'event2' ) );
+			node2.dispatchEvent( new Event( 'event1' ) );
+			node2.dispatchEvent( new Event( 'event2' ) );
+
+			sinon.assert.notCalled( spy1 );
+			sinon.assert.calledOnce( spy2 );
+			sinon.assert.notCalled( spy3 );
+			sinon.assert.calledOnce( spy4 );
+
+			domEmitter.stopListening();
+
+			node1.dispatchEvent( new Event( 'event1' ) );
+			node1.dispatchEvent( new Event( 'event2' ) );
+			node2.dispatchEvent( new Event( 'event1' ) );
+			node2.dispatchEvent( new Event( 'event2' ) );
+
+			sinon.assert.notCalled( spy1 );
+			sinon.assert.calledOnce( spy2 );
+			sinon.assert.notCalled( spy3 );
+			sinon.assert.calledOnce( spy4 );
+
+			expect( domEmitter ).to.not.have.property( '_listeningTo' );
+		} );
+
 		it( 'should not stop other nodes when a non-listened node is provided', () => {
 			const spy = testUtils.sinon.spy();