1
+ describe ( '$transition:' , function ( ) {
2
+ var statesTree , statesMap = { } ;
3
+ var emptyPath ;
4
+ var counts ;
5
+ var asyncCount ;
6
+
7
+
8
+
9
+ beforeEach ( module ( 'ui.router' , function ( $stateProvider , $locationProvider ) {
10
+ locationProvider = $locationProvider ;
11
+ $locationProvider . html5Mode ( false ) ;
12
+ } ) ) ;
13
+
14
+
15
+ beforeEach ( module ( function ( $stateProvider , $provide ) {
16
+ counts = { _J : 0 , _J2 : 0 , _K : 0 , _L : 0 , _M : 0 } ;
17
+ states = {
18
+ A : { resolve : { _A : function ( ) { return "A" ; } , _A2 : function ( ) { return "A2" ; } } ,
19
+ B : { resolve : { _B : function ( ) { return "B" ; } , _B2 : function ( ) { return "B2" ; } } ,
20
+ C : { resolve : { _C : function ( _A , _B ) { return _A + _B + "C" ; } , _C2 : function ( ) { return "C2" ; } } ,
21
+ D : { resolve : { _D : function ( _D2 ) { return "D1" + _D2 ; } , _D2 : function ( ) { return "D2" ; } } }
22
+ }
23
+ } ,
24
+ E : { resolve : { _E : function ( ) { return "E" ; } } ,
25
+ F : { resolve : { _E : function ( ) { return "_E" ; } , _F : function ( _E ) { return _E + "F" ; } } }
26
+ } ,
27
+ G : { resolve : { _G : function ( ) { return "G" ; } } ,
28
+ H : { resolve : { _G : function ( _G ) { return _G + "_G" ; } , _H : function ( _G ) { return _G + "H" ; } } }
29
+ } ,
30
+ I : { resolve : { _I : function ( _I ) { return "I" ; } } }
31
+ } ,
32
+ J : { resolve : { _J : function ( ) { counts [ '_J' ] ++ ; return "J" ; } , _J2 : function ( _J ) { counts [ '_J2' ] ++ ; return _J + "J2" ; } } ,
33
+ K : { resolve : { _K : function ( _J2 ) { counts [ '_K' ] ++ ; return _J2 + "K" ; } } ,
34
+ L : { resolve : { _L : function ( _K ) { counts [ '_L' ] ++ ; return _K + "L" ; } } ,
35
+ M : { resolve : { _M : function ( _L ) { counts [ '_M' ] ++ ; return _L + "M" ; } } }
36
+ }
37
+ } ,
38
+ N : {
39
+ resolve : { _N : function ( _J ) { return _J + "N" ; } , _N2 : function ( _J ) { return _J + "N2" ; } , _N3 : function ( _J ) { return _J + "N3" ; } } ,
40
+ resolvePolicy : { _N : "eager" , _N2 : "lazy" , _N3 : "jit" }
41
+ }
42
+ } ,
43
+ O : { resolve : { _O : function ( _O2 ) { return _O2 + "O" ; } , _O2 : function ( _O ) { return _O + "O2" ; } }
44
+ }
45
+ } ;
46
+
47
+ var stateProps = [ "resolve" , "resolvePolicy" ] ;
48
+ statesTree = loadStates ( { } , states , '' ) ;
49
+
50
+ function loadStates ( parent , state , name ) {
51
+ var thisState = pick . apply ( null , [ state ] . concat ( stateProps ) ) ;
52
+ var substates = omit . apply ( null , [ state ] . concat ( stateProps ) ) ;
53
+
54
+ thisState . name = name ;
55
+ // if (parent && parent.name) {
56
+ // thisState.name = parent.name + "." + name;
57
+ // }
58
+ thisState . parent = parent ;
59
+ thisState . data = { children : [ ] } ;
60
+
61
+ angular . forEach ( substates , function ( value , key ) {
62
+ thisState . data . children . push ( loadStates ( thisState , value , key ) ) ;
63
+ } ) ;
64
+ statesMap [ name ] = thisState ;
65
+ return thisState ;
66
+ }
67
+
68
+ angular . forEach ( statesMap , function ( state , name ) {
69
+ $stateProvider . state ( state ) ;
70
+ } ) ;
71
+
72
+ // console.log(map(makePath([ "A", "B", "C" ]), function(s) { return s.name; }));
73
+ } ) ) ;
74
+
75
+ function makePath ( names ) {
76
+ return new Path ( map ( names , function ( name ) { return statesMap [ name ] ; } ) ) ;
77
+ }
78
+
79
+ describe ( 'Transition().runAsync' , function ( ) {
80
+ it ( 'should resolve all resolves in a PathElement' , inject ( function ( $q , $state ) {
81
+ $state . go ( "B" ) ;
82
+ $q . flush ( ) ;
83
+ } ) ) ;
84
+ } ) ;
85
+ } ) ;
0 commit comments