@@ -20,13 +20,14 @@ describe('state', function () {
20
20
var A = { data : { } } ,
21
21
B = { } ,
22
22
C = { } ,
23
- D = { params : { x : { } , y : { } } } ,
24
- DD = { parent : D , params : { x : { } , y : { } , z : { } } } ,
23
+ D = { params : { x : null , y : null } } ,
24
+ DD = { parent : D , params : { x : null , y : null , z : null } } ,
25
25
E = { params : { i : { } } } ,
26
26
H = { data : { propA : 'propA' , propB : 'propB' } } ,
27
27
HH = { parent : H } ,
28
28
HHH = { parent : HH , data : { propA : 'overriddenA' , propC : 'propC' } } ,
29
29
RS = { url : '^/search?term' , reloadOnSearch : false } ,
30
+ OPT = { url : '/opt/:param' , params : { param : 100 } } ,
30
31
AppInjectable = { } ;
31
32
32
33
beforeEach ( module ( function ( $stateProvider , $provide ) {
@@ -46,6 +47,7 @@ describe('state', function () {
46
47
. state ( 'H' , H )
47
48
. state ( 'HH' , HH )
48
49
. state ( 'HHH' , HHH )
50
+ . state ( 'OPT' , OPT )
49
51
. state ( 'RS' , RS )
50
52
51
53
. state ( 'home' , { url : "/" } )
@@ -101,8 +103,8 @@ describe('state', function () {
101
103
// State param inheritance tests. param1 is inherited by sub1 & sub2;
102
104
// param2 should not be transferred (unless explicitly set).
103
105
. state ( 'root' , { url : '^/root?param1' } )
104
- . state ( 'root.sub1' , { url : '/1?param2' } )
105
- . state ( 'root.sub2' , { url : '/2?param2' } ) ;
106
+ . state ( 'root.sub1' , { url : '/1?param2' } ) ;
107
+ $stateProvider . state ( 'root.sub2' , { url : '/2?param2' } ) ;
106
108
107
109
$provide . value ( 'AppInjectable' , AppInjectable ) ;
108
110
} ) ) ;
@@ -642,7 +644,7 @@ describe('state', function () {
642
644
643
645
it ( 'contains the parameter values for the current state' , inject ( function ( $state , $q ) {
644
646
initStateTo ( D , { x : 'x value' , z : 'invalid value' } ) ;
645
- expect ( $state . params ) . toEqual ( { x : 'x value' , y : undefined } ) ;
647
+ expect ( $state . params ) . toEqual ( { x : 'x value' , y : null } ) ;
646
648
} ) ) ;
647
649
} ) ;
648
650
@@ -745,6 +747,7 @@ describe('state', function () {
745
747
'H' ,
746
748
'HH' ,
747
749
'HHH' ,
750
+ 'OPT' ,
748
751
'RS' ,
749
752
'about' ,
750
753
'about.person' ,
@@ -786,6 +789,26 @@ describe('state', function () {
786
789
} ) ) ;
787
790
} ) ;
788
791
792
+ describe ( 'optional parameters' , function ( ) {
793
+ it ( "should be populated during transition, if unspecified" , inject ( function ( $state , $q ) {
794
+ var stateParams ;
795
+ $state . get ( "OPT" ) . onEnter = function ( $stateParams ) { stateParams = $stateParams ; } ;
796
+ $state . go ( "OPT" ) ; $q . flush ( ) ;
797
+ expect ( $state . current . name ) . toBe ( "OPT" ) ;
798
+ expect ( $state . params ) . toEqual ( { param : 100 } ) ;
799
+ expect ( stateParams ) . toEqual ( { param : 100 } ) ;
800
+ } ) ) ;
801
+
802
+ it ( "should be populated during primary transition, if unspecified" , inject ( function ( $state , $q ) {
803
+ var count = 0 ;
804
+ $state . get ( "OPT" ) . onEnter = function ( $stateParams ) { count ++ ; } ;
805
+ $state . go ( "OPT" ) ; $q . flush ( ) ;
806
+ expect ( $state . current . name ) . toBe ( "OPT" ) ;
807
+ expect ( $state . params ) . toEqual ( { param : 100 } ) ;
808
+ expect ( count ) . toEqual ( 1 ) ;
809
+ } ) ) ;
810
+ } ) ;
811
+
789
812
describe ( 'url handling' , function ( ) {
790
813
it ( 'should transition to the same state with different parameters' , inject ( function ( $state , $rootScope , $location ) {
791
814
$location . path ( "/about/bob" ) ;
0 commit comments