Skip to content

Commit 6b7505e

Browse files
committed
test($rootScope): test removal of event listerns during event broadcast
1 parent 56ac2a7 commit 6b7505e

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

test/ng/rootScopeSpec.js

+47
Original file line numberDiff line numberDiff line change
@@ -2316,6 +2316,53 @@ describe('Scope', function() {
23162316
}));
23172317

23182318

2319+
it('should call next listener when removing current', inject(function($rootScope) {
2320+
var remove1 = $rootScope.$on('abc', function() { remove1() });
2321+
2322+
var listener2 = jasmine.createSpy();
2323+
var remove2 = $rootScope.$on('abc', listener2);
2324+
2325+
var listener3 = jasmine.createSpy();
2326+
var remove3 = $rootScope.$on('abc', listener3);
2327+
2328+
$rootScope.$broadcast('abc');
2329+
expect(listener2).toHaveBeenCalled();
2330+
expect(listener3).toHaveBeenCalled();
2331+
}));
2332+
2333+
2334+
it('should call all listeners when removing previous', inject(function($rootScope) {
2335+
var listener1 = jasmine.createSpy();
2336+
var remove1 = $rootScope.$on('abc', listener1);
2337+
2338+
var listener2 = jasmine.createSpy().and.callFake(remove1);
2339+
var remove2 = $rootScope.$on('abc', listener2);
2340+
2341+
var listener3 = jasmine.createSpy();
2342+
var remove3 = $rootScope.$on('abc', listener3);
2343+
2344+
$rootScope.$broadcast('abc');
2345+
expect(listener1).toHaveBeenCalled();
2346+
expect(listener2).toHaveBeenCalled();
2347+
expect(listener3).toHaveBeenCalled();
2348+
}));
2349+
2350+
2351+
it('should not call listener when removed by previous', inject(function($rootScope) {
2352+
var listener1 = jasmine.createSpy();
2353+
var remove1 = $rootScope.$on('abc', listener1);
2354+
2355+
var remove2 = $rootScope.$on('abc', function() { remove3(); });
2356+
2357+
var listener3 = jasmine.createSpy();
2358+
var remove3 = $rootScope.$on('abc', listener3);
2359+
2360+
$rootScope.$broadcast('abc');
2361+
expect(listener1).toHaveBeenCalled();
2362+
expect(listener3).not.toHaveBeenCalled();
2363+
}));
2364+
2365+
23192366
it('should decrement ancestor $$listenerCount entries', inject(function($rootScope) {
23202367
var child1 = $rootScope.$new(),
23212368
child2 = child1.$new(),

0 commit comments

Comments
 (0)