@@ -213,6 +213,58 @@ describe('a Future State', function () {
213
213
} )
214
214
} )
215
215
} ) ;
216
+ } ) ;
217
+
218
+ fdescribe ( 'with a nested future state' , ( ) => {
219
+ let count , futureStateDefA , futureStateDefB , errors ;
220
+ let lazyStateDefA = { name : 'A' , url : '/a/:aid' , params : { id : "adefault" } } ;
221
+ let lazyStateDefB = { name : 'A.B' , url : '/b/:bid' , params : { id : "bdefault" } } ;
222
+ beforeEach ( ( ) => {
223
+ futureStateDefA = {
224
+ name : 'A' , url : '/a' ,
225
+ lazyLoad : ( ) => new Promise ( resolve => { resolve ( { states : [ lazyStateDefA , futureStateDefB ] } ) ; } )
226
+ } ;
227
+
228
+ futureStateDefB = {
229
+ name : 'A.B' , url : '/b' ,
230
+ lazyLoad : ( ) => new Promise ( resolve => { resolve ( { states : [ lazyStateDefB ] } ) ; } )
231
+ } ;
232
+
233
+ $registry . register ( futureStateDefA ) ;
234
+ } ) ;
235
+
236
+ it ( 'should load and activate a nested future state' , ( done ) => {
237
+ expect ( $state . get ( 'A' ) ) . toBe ( futureStateDefA ) ;
238
+
239
+ $state . go ( 'A.B' , { aid : 'aid' , bid : 'bid' } ) . then ( ( ) => {
240
+ expect ( $state . current ) . toBe ( lazyStateDefB ) ;
241
+ done ( ) ;
242
+ } ) ;
243
+ } ) ;
244
+
245
+ it ( 'should load and activate a nested future state by url sync' , ( done ) => {
246
+ services . location . setUrl ( '/a/aid/b/bid' ) ;
247
+ $urlRouter . sync ( ) ;
248
+ $transitions . onSuccess ( { } , ( trans ) => {
249
+ expect ( $state . current . name ) . toBe ( 'A.B' ) ;
250
+ expect ( $state . params ) . toEqualValues ( { aid : 'aid' , bid : 'bid' } ) ;
251
+
252
+ let prev1 = trans . redirectedFrom ( ) ;
216
253
254
+ expect ( prev1 ) . toBeDefined ( ) ;
255
+ expect ( prev1 . targetState ( ) . $state ( ) . name ) . toBe ( 'A.B.**' ) ;
256
+ expect ( prev1 . options ( ) . source ) . toBe ( 'redirect' ) ;
257
+
258
+ let prev2 = prev1 . redirectedFrom ( ) ;
259
+ expect ( prev2 ) . toBeDefined ( ) ;
260
+ expect ( prev2 . targetState ( ) . $state ( ) . name ) . toBe ( 'A.**' ) ;
261
+ expect ( prev2 . options ( ) . source ) . toBe ( 'url' ) ;
262
+
263
+ let prev3 = prev2 . redirectedFrom ( ) ;
264
+ expect ( prev3 ) . toBeNull ( ) ;
265
+
266
+ done ( ) ;
267
+ } ) ;
268
+ } ) ;
217
269
} ) ;
218
270
} ) ;
0 commit comments