4
4
} from "../src/index" ;
5
5
import { tree2Array , PromiseResult } from "./_testUtils" ;
6
6
import { TestingPlugin } from "./_testingPlugin" ;
7
+ import { equals } from "../src/common/common" ;
7
8
8
9
describe ( 'transition' , function ( ) {
9
10
@@ -783,8 +784,82 @@ describe('transition', function () {
783
784
} ) ) ;
784
785
} ) ;
785
786
} ) ;
786
- } ) ;
787
787
788
- describe ( "initial url redirect" , ( ) => {
788
+ describe ( 'inherited params' , ( ) => {
789
+ it ( 'should inherit params when trans options `inherit: true`' , async ( done ) => {
790
+ router . stateRegistry . register ( { name : 'foo' , url : '/:path?query1&query2' } ) ;
791
+
792
+ await $state . go ( 'foo' , { path : 'abc' , query1 : 'def' , query2 : 'ghi' } ) ;
793
+ expect ( router . globals . params ) . toEqualValues ( { path : 'abc' , query1 : 'def' , query2 : 'ghi' } ) ;
794
+
795
+ await $state . go ( 'foo' , { query2 : 'jkl' } ) ;
796
+ expect ( router . globals . params ) . toEqualValues ( { path : 'abc' , query1 : 'def' , query2 : 'jkl' } ) ;
797
+
798
+ done ( ) ;
799
+ } ) ;
800
+
801
+ it ( 'should not inherit params when param declaration has inherit: false' , async ( done ) => {
802
+ router . stateRegistry . register ( {
803
+ name : 'foo' ,
804
+ url : '/:path?query1&query2' ,
805
+ params : {
806
+ query1 : { inherit : false , value : null }
807
+ }
808
+ } ) ;
809
+
810
+ await $state . go ( 'foo' , { path : 'abc' , query1 : 'def' , query2 : 'ghi' } ) ;
811
+ expect ( router . globals . params ) . toEqualValues ( { path : 'abc' , query1 : 'def' , query2 : 'ghi' } ) ;
812
+
813
+ await $state . go ( 'foo' , { query2 : 'jkl' } ) ;
814
+ expect ( router . globals . params ) . toEqualValues ( { path : 'abc' , query1 : null , query2 : 'jkl' } ) ;
815
+
816
+ done ( ) ;
817
+ } ) ;
818
+
819
+ it ( 'should not inherit params whose type has inherit: false' , async ( done ) => {
820
+ router . urlService . config . type ( 'inherit' , {
821
+ inherit : true , encode : x => x , decode : x => x , is : ( ) => true , equals : equals , pattern : / .* / , raw : false ,
822
+ } ) ;
823
+
824
+ router . urlService . config . type ( 'noinherit' , {
825
+ inherit : false , encode : x => x , decode : x => x , is : ( ) => true , equals : equals , pattern : / .* / , raw : false ,
826
+ } ) ;
827
+
828
+ router . stateRegistry . register ( {
829
+ name : 'foo' ,
830
+ url : '/?{query1:inherit}&{query2:noinherit}' ,
831
+ } ) ;
832
+
833
+ await $state . go ( 'foo' , { query1 : 'abc' , query2 : 'def' } ) ;
834
+ expect ( router . globals . params ) . toEqualValues ( { query1 : 'abc' , query2 : 'def' } ) ;
835
+
836
+ await $state . go ( 'foo' ) ;
837
+ expect ( router . globals . params ) . toEqualValues ( { query1 : 'abc' , query2 : undefined } ) ;
838
+
839
+ done ( ) ;
840
+ } ) ;
841
+
842
+ it ( 'should not inherit the "hash" param value' , async ( done ) => {
843
+ router . stateRegistry . register ( { name : 'hash' , url : '/hash' } ) ;
844
+ router . stateRegistry . register ( { name : 'other' , url : '/other' } ) ;
789
845
790
- } ) ;
846
+ await $state . go ( 'hash' , { "#" : "abc" } ) ;
847
+ expect ( router . globals . params ) . toEqualValues ( { "#" : "abc" } ) ;
848
+ expect ( router . urlService . hash ( ) ) . toBe ( 'abc' ) ;
849
+
850
+ await $state . go ( 'hash' ) ;
851
+ expect ( router . globals . params ) . toEqualValues ( { "#" : null } ) ;
852
+ expect ( router . urlService . hash ( ) ) . toBe ( '' ) ;
853
+
854
+ await $state . go ( 'other' , { "#" : "def" } ) ;
855
+ expect ( router . globals . params ) . toEqualValues ( { "#" : "def" } ) ;
856
+ expect ( router . urlService . hash ( ) ) . toBe ( 'def' ) ;
857
+
858
+ await $state . go ( 'hash' ) ;
859
+ expect ( router . globals . params ) . toEqualValues ( { "#" : null } ) ;
860
+ expect ( router . urlService . hash ( ) ) . toBe ( '' ) ;
861
+
862
+ done ( ) ;
863
+ } ) ;
864
+ } ) ;
865
+ } ) ;
0 commit comments