@@ -93,7 +93,13 @@ describe('state', function () {
93
93
} )
94
94
95
95
. state ( 'first' , { url : '^/first/subpath' } )
96
- . state ( 'second' , { url : '^/second' } ) ;
96
+ . state ( 'second' , { url : '^/second' } )
97
+
98
+ // State param inheritance tests. param1 is inherited by sub1 & sub2;
99
+ // param2 should not be transferred (unless explicitly set).
100
+ . state ( 'root' , { url : '^/root?param1' } )
101
+ . state ( 'root.sub1' , { url : '/1?param2' } )
102
+ . state ( 'root.sub2' , { url : '/2?param2' } ) ;
97
103
98
104
$provide . value ( 'AppInjectable' , AppInjectable ) ;
99
105
} ) ) ;
@@ -669,6 +675,9 @@ describe('state', function () {
669
675
'home.redirect' ,
670
676
'resolveFail' ,
671
677
'resolveTimeout' ,
678
+ 'root' ,
679
+ 'root.sub1' ,
680
+ 'root.sub2' ,
672
681
'second'
673
682
] ;
674
683
expect ( list . map ( function ( state ) { return state . name ; } ) ) . toEqual ( names ) ;
@@ -802,6 +811,29 @@ describe('state', function () {
802
811
} ) ) ;
803
812
} ) ;
804
813
814
+ describe ( 'substate and stateParams inheritance' , function ( ) {
815
+ it ( 'should inherit the parent param' , inject ( function ( $state , $stateParams , $q ) {
816
+ initStateTo ( $state . get ( 'root' ) , { param1 : 1 } ) ;
817
+ $state . go ( 'root.sub1' , { param2 : 2 } ) ;
818
+ $q . flush ( ) ;
819
+ expect ( $state . current . name ) . toEqual ( 'root.sub1' ) ;
820
+ expect ( $stateParams ) . toEqual ( { param1 : '1' , param2 : '2' } ) ;
821
+ } ) ) ;
822
+
823
+ it ( 'should not inherit siblings\' states' , inject ( function ( $state , $stateParams , $q ) {
824
+ initStateTo ( $state . get ( 'root' ) , { param1 : 1 } ) ;
825
+ $state . go ( 'root.sub1' , { param2 : 2 } ) ;
826
+ $q . flush ( ) ;
827
+ expect ( $state . current . name ) . toEqual ( 'root.sub1' ) ;
828
+
829
+ $state . go ( 'root.sub2' ) ;
830
+ $q . flush ( ) ;
831
+ expect ( $state . current . name ) . toEqual ( 'root.sub2' ) ;
832
+
833
+ expect ( $stateParams ) . toEqual ( { param1 : '1' , param2 : null } ) ;
834
+ } ) ) ;
835
+ } ) ;
836
+
805
837
describe ( 'html5Mode compatibility' , function ( ) {
806
838
807
839
it ( 'should generate non-hashbang URLs in HTML5 mode' , inject ( function ( $state ) {
0 commit comments