@@ -2316,6 +2316,84 @@ describe('Scope', function() {
2316
2316
} ) ) ;
2317
2317
2318
2318
2319
+ it ( 'should call next listener when removing current' , inject ( function ( $rootScope ) {
2320
+ var listener1 = jasmine . createSpy ( ) . and . callFake ( function ( ) { remove1 ( ) ; } ) ;
2321
+ var remove1 = $rootScope . $on ( 'abc' , listener1 ) ;
2322
+
2323
+ var listener2 = jasmine . createSpy ( ) ;
2324
+ var remove2 = $rootScope . $on ( 'abc' , listener2 ) ;
2325
+
2326
+ var listener3 = jasmine . createSpy ( ) ;
2327
+ var remove3 = $rootScope . $on ( 'abc' , listener3 ) ;
2328
+
2329
+ $rootScope . $broadcast ( 'abc' ) ;
2330
+ expect ( listener1 ) . toHaveBeenCalled ( ) ;
2331
+ expect ( listener2 ) . toHaveBeenCalled ( ) ;
2332
+ expect ( listener3 ) . toHaveBeenCalled ( ) ;
2333
+
2334
+ listener1 . calls . reset ( ) ;
2335
+ listener2 . calls . reset ( ) ;
2336
+ listener3 . calls . reset ( ) ;
2337
+
2338
+ $rootScope . $broadcast ( 'abc' ) ;
2339
+ expect ( listener1 ) . not . toHaveBeenCalled ( ) ;
2340
+ expect ( listener2 ) . toHaveBeenCalled ( ) ;
2341
+ expect ( listener3 ) . toHaveBeenCalled ( ) ;
2342
+ } ) ) ;
2343
+
2344
+
2345
+ it ( 'should call all listeners when removing previous' , inject ( function ( $rootScope ) {
2346
+ var listener1 = jasmine . createSpy ( ) ;
2347
+ var remove1 = $rootScope . $on ( 'abc' , listener1 ) ;
2348
+
2349
+ var listener2 = jasmine . createSpy ( ) . and . callFake ( remove1 ) ;
2350
+ var remove2 = $rootScope . $on ( 'abc' , listener2 ) ;
2351
+
2352
+ var listener3 = jasmine . createSpy ( ) ;
2353
+ var remove3 = $rootScope . $on ( 'abc' , listener3 ) ;
2354
+
2355
+ $rootScope . $broadcast ( 'abc' ) ;
2356
+ expect ( listener1 ) . toHaveBeenCalled ( ) ;
2357
+ expect ( listener2 ) . toHaveBeenCalled ( ) ;
2358
+ expect ( listener3 ) . toHaveBeenCalled ( ) ;
2359
+
2360
+ listener1 . calls . reset ( ) ;
2361
+ listener2 . calls . reset ( ) ;
2362
+ listener3 . calls . reset ( ) ;
2363
+
2364
+ $rootScope . $broadcast ( 'abc' ) ;
2365
+ expect ( listener1 ) . not . toHaveBeenCalled ( ) ;
2366
+ expect ( listener2 ) . toHaveBeenCalled ( ) ;
2367
+ expect ( listener3 ) . toHaveBeenCalled ( ) ;
2368
+ } ) ) ;
2369
+
2370
+
2371
+ it ( 'should not call listener when removed by previous' , inject ( function ( $rootScope ) {
2372
+ var listener1 = jasmine . createSpy ( ) ;
2373
+ var remove1 = $rootScope . $on ( 'abc' , listener1 ) ;
2374
+
2375
+ var listener2 = jasmine . createSpy ( ) . and . callFake ( function ( ) { remove3 ( ) ; } ) ;
2376
+ var remove2 = $rootScope . $on ( 'abc' , listener2 ) ;
2377
+
2378
+ var listener3 = jasmine . createSpy ( ) ;
2379
+ var remove3 = $rootScope . $on ( 'abc' , listener3 ) ;
2380
+
2381
+ $rootScope . $broadcast ( 'abc' ) ;
2382
+ expect ( listener1 ) . toHaveBeenCalled ( ) ;
2383
+ expect ( listener2 ) . toHaveBeenCalled ( ) ;
2384
+ expect ( listener3 ) . not . toHaveBeenCalled ( ) ;
2385
+
2386
+ listener1 . calls . reset ( ) ;
2387
+ listener2 . calls . reset ( ) ;
2388
+ listener3 . calls . reset ( ) ;
2389
+
2390
+ $rootScope . $broadcast ( 'abc' ) ;
2391
+ expect ( listener1 ) . toHaveBeenCalled ( ) ;
2392
+ expect ( listener2 ) . toHaveBeenCalled ( ) ;
2393
+ expect ( listener3 ) . not . toHaveBeenCalled ( ) ;
2394
+ } ) ) ;
2395
+
2396
+
2319
2397
it ( 'should decrement ancestor $$listenerCount entries' , inject ( function ( $rootScope ) {
2320
2398
var child1 = $rootScope . $new ( ) ,
2321
2399
child2 = child1 . $new ( ) ,
0 commit comments