@@ -20,6 +20,10 @@ var states, statesTree, statesMap: { [key:string]: State } = {};
20
20
var vals , counts , expectCounts ;
21
21
var asyncCount ;
22
22
23
+ function invokeLater ( fn : Function , ctx : ResolveContext ) {
24
+ return new Resolvable ( "" , fn , services . $injector . annotate ( fn ) ) . get ( ctx )
25
+ }
26
+
23
27
function getStates ( ) {
24
28
return {
25
29
A : { resolve : { _A : function ( ) { return "A" ; } , _A2 : function ( ) { return "A2" ; } } ,
@@ -36,15 +40,15 @@ function getStates() {
36
40
} ,
37
41
I : { resolve : { _I : function ( _I ) { return "I" ; } } }
38
42
} ,
39
- J : { resolvePolicy : "JIT" , resolve : { _J : function ( ) { counts [ '_J' ] ++ ; return "J" ; } , _J2 : function ( _J ) { counts [ '_J2' ] ++ ; return _J + "J2" ; } } ,
40
- K : { resolvePolicy : "JIT" , resolve : { _K : function ( _J2 ) { counts [ '_K' ] ++ ; return _J2 + "K" ; } } ,
41
- L : { resolvePolicy : "JIT" , resolve : { _L : function ( _K ) { counts [ '_L' ] ++ ; return _K + "L" ; } } ,
42
- M : { resolvePolicy : "JIT" , resolve : { _M : function ( _L ) { counts [ '_M' ] ++ ; return _L + "M" ; } } }
43
+ J : { resolve : { _J : function ( ) { counts [ '_J' ] ++ ; return "J" ; } , _J2 : function ( _J ) { counts [ '_J2' ] ++ ; return _J + "J2" ; } } ,
44
+ K : { resolve : { _K : function ( _J2 ) { counts [ '_K' ] ++ ; return _J2 + "K" ; } } ,
45
+ L : { resolve : { _L : function ( _K ) { counts [ '_L' ] ++ ; return _K + "L" ; } } ,
46
+ M : { resolve : { _M : function ( _L ) { counts [ '_M' ] ++ ; return _L + "M" ; } } }
43
47
}
44
48
} ,
45
49
N : {
46
50
resolve : { _N : function ( _J ) { return _J + "N" ; } , _N2 : function ( _J ) { return _J + "N2" ; } , _N3 : function ( _J ) { return _J + "N3" ; } } ,
47
- resolvePolicy : { _N : "EAGER" , _N2 : "LAZY" , _N3 : "JIT " }
51
+ resolvePolicy : { _N : "EAGER" , _N2 : "LAZY" , _N3 : "LAZY " }
48
52
}
49
53
} ,
50
54
O : { resolve : { _O : function ( _O2 ) { return _O2 + "O" ; } , _O2 : function ( _O ) { return _O + "O2" ; } } } ,
@@ -93,7 +97,9 @@ function makePath(names: string[]): PathNode[] {
93
97
}
94
98
95
99
function getResolvedData ( pathContext : ResolveContext ) {
96
- return map ( filter ( pathContext . getResolvables ( ) , r => r . name !== '$stateParams' ) , prop ( "data" ) ) ;
100
+ return pathContext . getTokens ( ) . filter ( t => t !== '$stateParams' )
101
+ . map ( token => pathContext . getResolvable ( token ) )
102
+ . reduce ( ( acc , resolvable ) => { acc [ resolvable . token ] = resolvable . data ; return acc ; } , { } ) ;
97
103
}
98
104
99
105
@@ -113,7 +119,7 @@ describe('Resolvables system:', function () {
113
119
let ctx = new ResolveContext ( path ) ;
114
120
ctx . resolvePathElement ( statesMap [ "B" ] ) . then ( function ( ) {
115
121
expect ( getResolvedData ( ctx ) ) . toEqualData ( { _B : "B" , _B2 : "B2" } ) ;
116
- expect ( ctx . getResolvables ( ) [ "_A" ] ) . toBeDefined ( ) ;
122
+ expect ( ctx . getResolvable ( "_A" ) ) . toBeDefined ( ) ;
117
123
} ) . then ( done ) ;
118
124
} ) ;
119
125
@@ -129,7 +135,7 @@ describe('Resolvables system:', function () {
129
135
let path = makePath ( [ "J" , "N" ] ) ;
130
136
let ctx = new ResolveContext ( path ) ;
131
137
ctx . resolvePathElement ( statesMap [ "N" ] , { resolvePolicy : "LAZY" } ) . then ( function ( ) {
132
- expect ( getResolvedData ( ctx ) ) . toEqualData ( { _J : "J" , _N : "JN" , _N2 : "JN2" } ) ;
138
+ expect ( getResolvedData ( ctx ) ) . toEqualData ( { _J : "J" , _N : "JN" , _N2 : "JN2" , _N3 : "JN3" } ) ;
133
139
} ) . then ( done ) ;
134
140
} ) ;
135
141
} ) ;
@@ -138,9 +144,8 @@ describe('Resolvables system:', function () {
138
144
it ( 'should return Resolvables from the deepest element and all ancestors' , ( ) => {
139
145
let path = makePath ( [ "A" , "B" , "C" ] ) ;
140
146
let ctx = new ResolveContext ( path ) ;
141
- let resolvableLocals = ctx . getResolvables ( statesMap [ "C" ] ) ;
142
- let keys = Object . keys ( resolvableLocals ) . sort ( ) ;
143
- expect ( keys ) . toEqual ( [ "_A" , "_A2" , "_B" , "_B2" , "_C" , "_C2" ] ) ;
147
+ let tokens = ctx . getTokens ( ) . sort ( ) ;
148
+ expect ( tokens ) . toEqual ( [ "_A" , "_A2" , "_B" , "_B2" , "_C" , "_C2" ] ) ;
144
149
} ) ;
145
150
} ) ;
146
151
@@ -165,7 +170,7 @@ describe('Resolvables system:', function () {
165
170
let path = makePath ( [ "J" , "N" ] ) ;
166
171
let ctx = new ResolveContext ( path ) ;
167
172
ctx . resolvePath ( { resolvePolicy : "LAZY" } ) . then ( function ( ) {
168
- expect ( getResolvedData ( ctx ) ) . toEqualData ( { _J : "J" , _N : "JN" , _N2 : "JN2" } ) ;
173
+ expect ( getResolvedData ( ctx ) ) . toEqualData ( { _J : "J" , _J2 : "JJ2" , _N : "JN" , _N2 : "JN2" , _N3 : "JN3 "} ) ;
169
174
} ) . then ( done ) ;
170
175
} ) ;
171
176
} ) ;
@@ -174,7 +179,7 @@ describe('Resolvables system:', function () {
174
179
it ( 'should resolve one Resolvable, and its deps' , done => {
175
180
let path = makePath ( [ "A" , "B" , "C" ] ) ;
176
181
let ctx = new ResolveContext ( path ) ;
177
- ctx . getResolvables ( ) [ "_C" ] . resolve ( ctx ) . then ( function ( ) {
182
+ ctx . getResolvable ( "_C" ) . resolve ( ctx ) . then ( function ( ) {
178
183
expect ( getResolvedData ( ctx ) ) . toEqualData ( { _A : "A" , _B : "B" , _C : "ABC" } ) ;
179
184
} ) . then ( done ) ;
180
185
} ) ;
@@ -187,7 +192,7 @@ describe('Resolvables system:', function () {
187
192
let result ;
188
193
189
194
let onEnter1 = function ( _C2 ) { result = _C2 ; } ;
190
- ctx . invokeLater ( onEnter1 , { } ) . then ( function ( ) {
195
+ invokeLater ( onEnter1 , ctx ) . then ( function ( ) {
191
196
expect ( result ) . toBe ( "C2" ) ;
192
197
expect ( getResolvedData ( ctx ) ) . toEqualData ( { _C2 : "C2" } ) ;
193
198
} ) . then ( done ) ;
@@ -203,10 +208,10 @@ describe('Resolvables system:', function () {
203
208
let cOnEnter1 = function ( _C2 ) { result = _C2 ; } ;
204
209
let cOnEnter2 = function ( _C ) { result = _C ; } ;
205
210
206
- ctx . invokeLater ( cOnEnter1 , { } ) . then ( ( ) => {
211
+ invokeLater ( cOnEnter1 , ctx ) . then ( ( ) => {
207
212
expect ( result ) . toBe ( "C2" ) ;
208
213
expect ( getResolvedData ( ctx ) ) . toEqualData ( { _C2 : "C2" } ) ;
209
- } ) . then ( ( ) => ctx . invokeLater ( cOnEnter2 , { } ) ) . then ( ( ) => {
214
+ } ) . then ( ( ) => invokeLater ( cOnEnter2 , ctx ) ) . then ( ( ) => {
210
215
expect ( result ) . toBe ( "ABC" ) ;
211
216
expect ( getResolvedData ( ctx ) ) . toEqualData ( { _A : "A" , _B : "B" , _C : "ABC" , _C2 : "C2" } ) ;
212
217
} ) . then ( done ) ;
@@ -219,7 +224,7 @@ describe('Resolvables system:', function () {
219
224
let ctx = new ResolveContext ( path ) ;
220
225
221
226
let cOnEnter = function ( _D ) { } ;
222
- ctx . invokeLater ( cOnEnter , { } ) . catch ( function ( err ) {
227
+ invokeLater ( cOnEnter , ctx ) . catch ( function ( err ) {
223
228
expect ( err . message ) . toContain ( 'Could not find Dependency Injection token: "_D"' ) ;
224
229
done ( ) ;
225
230
} ) ;
@@ -237,7 +242,7 @@ describe('Resolvables system:', function () {
237
242
result = _D ;
238
243
} ;
239
244
240
- ctx . invokeLater ( dOnEnter , { } ) . then ( function ( ) {
245
+ invokeLater ( dOnEnter , ctx ) . then ( function ( ) {
241
246
expect ( result ) . toBe ( "D1D2" ) ;
242
247
expect ( getResolvedData ( ctx ) ) . toEqualData ( { _D : "D1D2" , _D2 : "D2" } ) ;
243
248
} ) . then ( done ) ;
@@ -254,7 +259,7 @@ describe('Resolvables system:', function () {
254
259
result = _F ;
255
260
} ;
256
261
257
- ctx . invokeLater ( fOnEnter , { } ) . then ( function ( ) {
262
+ invokeLater ( fOnEnter , ctx ) . then ( function ( ) {
258
263
expect ( result ) . toBe ( "_EF" ) ;
259
264
} ) . then ( done ) ;
260
265
} ) ;
@@ -269,9 +274,9 @@ describe('Resolvables system:', function () {
269
274
let result ;
270
275
let ctx = new ResolveContext ( path ) ;
271
276
272
- ctx . getResolvables ( ) [ "_G" ] . get ( ctx ) . then ( data => {
277
+ ctx . getResolvable ( "_G" ) . get ( ctx ) . then ( data => {
273
278
expect ( data ) . toBe ( "G_G" ) ;
274
- } ) . then ( ( ) => ctx . invokeLater ( hOnEnter , { } ) ) . then ( ( ) => {
279
+ } ) . then ( ( ) => invokeLater ( hOnEnter , ctx ) ) . then ( ( ) => {
275
280
expect ( result ) . toBe ( "G_GH" ) ;
276
281
} ) . then ( done ) ;
277
282
} ) ;
@@ -284,7 +289,7 @@ describe('Resolvables system:', function () {
284
289
285
290
// let iPathElement = path.elements[1];
286
291
let iOnEnter = function ( _I ) { } ;
287
- let promise = ctx . invokeLater ( iOnEnter , { } ) ;
292
+ let promise = invokeLater ( iOnEnter , ctx ) ;
288
293
promise . catch ( function ( err ) {
289
294
expect ( err . message ) . toContain ( 'Could not find Dependency Injection token: "_I"' ) ;
290
295
done ( ) ;
@@ -298,7 +303,7 @@ describe('Resolvables system:', function () {
298
303
let ctx = new ResolveContext ( path ) ;
299
304
300
305
var iOnEnter = function ( _O ) { } ;
301
- ctx . invokeLater ( iOnEnter , { } ) . catch ( function ( err ) {
306
+ invokeLater ( iOnEnter , ctx ) . catch ( function ( err ) {
302
307
expect ( err . message ) . toContain ( "[$injector:unpr] Unknown provider: _IProvider " ) ;
303
308
done ( ) ;
304
309
} ) ;
@@ -323,9 +328,9 @@ describe('Resolvables system:', function () {
323
328
result = _K ;
324
329
onEnterCount ++ ;
325
330
} ;
326
- ctx . invokeLater ( kOnEnter , { } )
331
+ invokeLater ( kOnEnter , ctx )
327
332
. then ( checkCounts )
328
- . then ( ( ) => ctx . invokeLater ( kOnEnter , { } ) )
333
+ . then ( ( ) => invokeLater ( kOnEnter , ctx ) )
329
334
. then ( checkCounts )
330
335
. then ( done )
331
336
} ) ;
@@ -341,12 +346,12 @@ describe('Resolvables system:', function () {
341
346
expect ( counts [ "_J" ] ) . toBe ( 0 ) ;
342
347
expect ( counts [ "_J2" ] ) . toBe ( 0 ) ;
343
348
344
- ctx1 . resolvePath ( { resolvePolicy : "JIT " } ) . then ( function ( ) {
349
+ ctx1 . resolvePath ( { resolvePolicy : "LAZY " } ) . then ( function ( ) {
345
350
expect ( counts [ "_J" ] ) . toBe ( 1 ) ;
346
351
expect ( counts [ "_J2" ] ) . toBe ( 1 ) ;
347
352
expect ( counts [ "_K" ] ) . toBe ( 1 ) ;
348
353
asyncCount ++ ;
349
- } ) . then ( ( ) => ctx2 . resolvePath ( { resolvePolicy : "JIT " } ) ) . then ( ( ) => {
354
+ } ) . then ( ( ) => ctx2 . resolvePath ( { resolvePolicy : "LAZY " } ) ) . then ( ( ) => {
350
355
expect ( counts [ "_J" ] ) . toBe ( 1 ) ;
351
356
expect ( counts [ "_J2" ] ) . toBe ( 1 ) ;
352
357
expect ( counts [ "_K" ] ) . toBe ( 1 ) ;
@@ -360,7 +365,7 @@ describe('Resolvables system:', function () {
360
365
it ( 'should create a partial path from an original path' , done => {
361
366
let path = makePath ( [ "J" , "K" , "L" ] ) ;
362
367
let ctx1 = new ResolveContext ( path ) ;
363
- ctx1 . resolvePath ( { resolvePolicy : 'JIT ' } ) . then ( function ( ) {
368
+ ctx1 . resolvePath ( { resolvePolicy : 'LAZY ' } ) . then ( function ( ) {
364
369
expect ( counts [ "_J" ] ) . toBe ( 1 ) ;
365
370
expect ( counts [ "_J2" ] ) . toBe ( 1 ) ;
366
371
expect ( counts [ "_K" ] ) . toBe ( 1 ) ;
@@ -373,7 +378,7 @@ describe('Resolvables system:', function () {
373
378
} ) . then ( ( ) => {
374
379
let path2 = path . concat ( makePath ( [ "L" , "M" ] ) ) ;
375
380
let ctx2 = new ResolveContext ( path2 ) ;
376
- return ctx2 . resolvePath ( { resolvePolicy : "JIT " } ) ;
381
+ return ctx2 . resolvePath ( { resolvePolicy : "LAZY " } ) ;
377
382
} ) . then ( ( ) => {
378
383
expect ( counts [ "_J" ] ) . toBe ( 1 ) ;
379
384
expect ( counts [ "_J2" ] ) . toBe ( 1 ) ;
0 commit comments