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

Commit 916f3cb

Browse files
committed
test($rootScope): test recursive event broadcast and emit
1 parent ffb075f commit 916f3cb

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
@@ -2925,6 +2925,45 @@ describe('Scope', function() {
29252925
}));
29262926
});
29272927
});
2928+
2929+
2930+
it('should allow recursive $emit/$broadcast', inject(function($rootScope) {
2931+
var callCount = 0;
2932+
$rootScope.$on('evt', function($event, arg0) {
2933+
callCount++;
2934+
if (arg0 !== 1234) {
2935+
$rootScope.$emit('evt', 1234);
2936+
$rootScope.$broadcast('evt', 1234);
2937+
}
2938+
});
2939+
2940+
$rootScope.$emit('evt');
2941+
$rootScope.$broadcast('evt');
2942+
expect(callCount).toBe(6);
2943+
}));
2944+
2945+
2946+
it('should allow recursive $emit/$broadcast between parent/child', inject(function($rootScope) {
2947+
var child = $rootScope.$new();
2948+
var calls = '';
2949+
2950+
$rootScope.$on('evt', function($event, arg0) {
2951+
calls += 'r'; // For "root".
2952+
if (arg0 === 'fromChild') {
2953+
$rootScope.$broadcast('evt', 'fromRoot2');
2954+
}
2955+
});
2956+
2957+
child.$on('evt', function($event, arg0) {
2958+
calls += 'c'; // For "child".
2959+
if (arg0 === 'fromRoot1') {
2960+
child.$emit('evt', 'fromChild');
2961+
}
2962+
});
2963+
2964+
$rootScope.$broadcast('evt', 'fromRoot1');
2965+
expect(calls).toBe('rccrrc');
2966+
}));
29282967
});
29292968

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

0 commit comments

Comments
 (0)