aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorIgor Minar2011-02-27 16:19:21 -0800
committerIgor Minar2011-02-27 16:19:21 -0800
commita709dc19b8b3c3e71970fde6f274cba202e57775 (patch)
tree8c2db416408b6a581818d4db79c9cf779ef37f85 /test
parent65585a2d3c4f73a17d20310de30546116a9a6827 (diff)
downloadangular.js-a709dc19b8b3c3e71970fde6f274cba202e57775.tar.bz2
adding an extra injector spec
- added a spec for dependency graph resolution - also simplyfying cache presence check
Diffstat (limited to 'test')
-rw-r--r--test/InjectorSpec.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/InjectorSpec.js b/test/InjectorSpec.js
index e9a528cc..a0f15132 100644
--- a/test/InjectorSpec.js
+++ b/test/InjectorSpec.js
@@ -45,6 +45,32 @@ describe('injector', function(){
expect(scope).toEqual({mi:'Mi', name:'Misko'});
});
+
+ it('should resolve dependency graph and instantiate all services just once', function(){
+ var log = [];
+
+// s1
+// / |\
+// / s2\
+// / / | \\
+// /s3 < s4 > s5
+// //
+// s6
+
+
+ providers('s1', function(){ log.push('s1'); }, {$inject: ['s2', 's5', 's6']});
+ providers('s2', function(){ log.push('s2'); }, {$inject: ['s3', 's4', 's5']});
+ providers('s3', function(){ log.push('s3'); }, {$inject: ['s6']});
+ providers('s4', function(){ log.push('s4'); }, {$inject: ['s3', 's5']});
+ providers('s5', function(){ log.push('s5'); });
+ providers('s6', function(){ log.push('s6'); });
+
+ inject('s1');
+
+ expect(log).toEqual(['s6', 's3', 's5', 's4', 's2', 's1']);
+ });
+
+
it('should provide usefull message if no provider', function(){
assertThrows("Unknown provider for 'idontexist'.", function(){
inject('idontexist');