Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 26a8f97

Browse files
committed
test($rootScope): test recursive event broadcast and emit
1 parent 2b57db4 commit 26a8f97

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

test/ng/rootScopeSpec.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2803,6 +2803,45 @@ describe('Scope', function() {
28032803
}));
28042804
});
28052805
});
2806+
2807+
2808+
it('should allow recursive $emit/$broadcast', inject(function($rootScope) {
2809+
var callCount = 0;
2810+
$rootScope.$on('evt', function($event, arg0) {
2811+
callCount++;
2812+
if (arg0 !== 1234) {
2813+
$rootScope.$emit('evt', 1234);
2814+
$rootScope.$broadcast('evt', 1234);
2815+
}
2816+
});
2817+
2818+
$rootScope.$emit('evt');
2819+
$rootScope.$broadcast('evt');
2820+
expect(callCount).toBe(6);
2821+
}));
2822+
2823+
2824+
it('should allow recursive $emit/$broadcast between parent/child', inject(function($rootScope) {
2825+
var child = $rootScope.$new();
2826+
var calls = '';
2827+
2828+
$rootScope.$on('evt', function($event, arg0) {
2829+
calls += 'r'; // For "root".
2830+
if (arg0 === 'fromChild') {
2831+
$rootScope.$broadcast('evt', 'fromRoot2');
2832+
}
2833+
});
2834+
2835+
child.$on('evt', function($event, arg0) {
2836+
calls += 'c'; // For "child".
2837+
if (arg0 === 'fromRoot1') {
2838+
child.$emit('evt', 'fromChild');
2839+
}
2840+
});
2841+
2842+
$rootScope.$broadcast('evt', 'fromRoot1');
2843+
expect(calls).toBe('rccrrc');
2844+
}));
28062845
});
28072846

28082847
describe('doc examples', function() {

0 commit comments

Comments
 (0)