@@ -345,7 +345,7 @@ describe('Routing with async components', function() {
345
345
} ) ;
346
346
347
347
beforeEach ( function ( ) {
348
- mainWasInLoadingState = false ;
348
+ mainWasInLoadingState = false ;
349
349
aboutWasInLoadingState = false ;
350
350
351
351
mainSeenPendingUpdate = false ;
@@ -553,6 +553,33 @@ describe('Contextual routers', function() {
553
553
554
554
if ( ! historyAPI ) return ;
555
555
556
+ var SubSubCat = React . createClass ( {
557
+
558
+ render : function ( ) {
559
+ return div ( null ,
560
+ Router . Locations ( { ref : 'router' , contextual : true } ,
561
+ Router . Location ( {
562
+ path : '/' ,
563
+ handler : function ( props ) { return div ( null , 'subcat/subsubcat/root' ) }
564
+ } ) ,
565
+ Router . Location ( {
566
+ path : '/back_to_parent' ,
567
+ ref : 'link' ,
568
+ handler : function ( props ) {
569
+ return Router . Link ( { href : '../' } , 'subcat/subsubcat/back_to_parent' )
570
+ }
571
+ } ) ,
572
+ Router . Location ( {
573
+ path : '/back_to_root' ,
574
+ ref : 'link' ,
575
+ handler : function ( props ) {
576
+ return Router . Link ( { href : '../../__zuul' } , 'subcat/subsubcat/back_to_root' )
577
+ }
578
+ } )
579
+ ) ) ;
580
+ }
581
+ } ) ;
582
+
556
583
var SubCat = React . createClass ( {
557
584
558
585
render : function ( ) {
@@ -575,6 +602,18 @@ describe('Contextual routers', function() {
575
602
handler : function ( props ) {
576
603
return Router . Link ( { global : true , href : '/__zuul' } , 'subcat/escape' )
577
604
}
605
+ } ) ,
606
+ Router . Location ( {
607
+ path : '/back_to_parent' ,
608
+ ref : 'link' ,
609
+ handler : function ( props ) {
610
+ return Router . Link ( { href : '../__zuul' } , 'subcat/back_to_parent' )
611
+ }
612
+ } ) ,
613
+ Router . Location ( {
614
+ path : '/subsubcat/*' ,
615
+ handler : SubSubCat ,
616
+ ref : 'subsubcat'
578
617
} )
579
618
) ) ;
580
619
}
@@ -652,6 +691,42 @@ describe('Contextual routers', function() {
652
691
} ) ;
653
692
} ) ;
654
693
} ) ;
694
+
695
+ it ( 'does navigate to root context from nested' , function ( done ) {
696
+ assertRendered ( 'mainpage' ) ;
697
+ router . navigate ( '/__zuul/subcat/back_to_parent' , function ( ) {
698
+ assertRendered ( 'subcat/back_to_parent' ) ;
699
+ clickOn ( router . refs . subcat . refs . router . refs . link ) ;
700
+ delay ( function ( ) {
701
+ assertRendered ( 'mainpage' ) ;
702
+ done ( ) ;
703
+ } ) ;
704
+ } ) ;
705
+ } ) ;
706
+
707
+ it ( 'does navigate to nested context from double nested' , function ( done ) {
708
+ assertRendered ( 'mainpage' ) ;
709
+ router . navigate ( '/__zuul/subcat/subsubcat/back_to_parent' , function ( ) {
710
+ assertRendered ( 'subcat/subsubcat/back_to_parent' ) ;
711
+ clickOn ( router . refs . subcat . refs . router . refs . subsubcat . refs . router . refs . link ) ;
712
+ delay ( function ( ) {
713
+ assertRendered ( 'subcat/root' ) ;
714
+ done ( ) ;
715
+ } ) ;
716
+ } ) ;
717
+ } ) ;
718
+
719
+ it ( 'does navigate to root context from double nested' , function ( done ) {
720
+ assertRendered ( 'mainpage' ) ;
721
+ router . navigate ( '/__zuul/subcat/subsubcat/back_to_root' , function ( ) {
722
+ assertRendered ( 'subcat/subsubcat/back_to_root' ) ;
723
+ clickOn ( router . refs . subcat . refs . router . refs . subsubcat . refs . router . refs . link ) ;
724
+ delay ( function ( ) {
725
+ assertRendered ( 'mainpage' ) ;
726
+ done ( ) ;
727
+ } ) ;
728
+ } ) ;
729
+ } ) ;
655
730
} ) ;
656
731
657
732
describe ( 'Multiple active routers' , function ( ) {
@@ -833,6 +908,33 @@ describe('Hash routing', function() {
833
908
834
909
describe ( 'Contextual Hash routers' , function ( ) {
835
910
911
+ var SubSubCat = React . createClass ( {
912
+
913
+ render : function ( ) {
914
+ return div ( null ,
915
+ Router . Locations ( { ref : 'router' , contextual : true } ,
916
+ Router . Location ( {
917
+ path : '/' ,
918
+ handler : function ( props ) { return div ( null , 'subcat/subsubcat/root' ) }
919
+ } ) ,
920
+ Router . Location ( {
921
+ path : '/back_to_parent' ,
922
+ ref : 'link' ,
923
+ handler : function ( props ) {
924
+ return Router . Link ( { href : '../' } , 'subcat/subsubcat/back_to_parent' )
925
+ }
926
+ } ) ,
927
+ Router . Location ( {
928
+ path : '/back_to_root' ,
929
+ ref : 'link' ,
930
+ handler : function ( props ) {
931
+ return Router . Link ( { href : '../../' } , 'subcat/subsubcat/back_to_root' )
932
+ }
933
+ } )
934
+ ) ) ;
935
+ }
936
+ } ) ;
937
+
836
938
var SubCat = React . createClass ( {
837
939
838
940
render : function ( ) {
@@ -848,6 +950,18 @@ describe('Contextual Hash routers', function() {
848
950
handler : function ( props ) {
849
951
return Router . Link ( { globalHash : true , href : '/' } , 'subcat/escape' ) ;
850
952
}
953
+ } ) ,
954
+ Router . Location ( {
955
+ path : '/back_to_parent' ,
956
+ ref : 'link' ,
957
+ handler : function ( props ) {
958
+ return Router . Link ( { href : '../' } , 'subcat/back_to_parent' )
959
+ }
960
+ } ) ,
961
+ Router . Location ( {
962
+ path : '/subsubcat/*' ,
963
+ handler : SubSubCat ,
964
+ ref : 'subsubcat'
851
965
} )
852
966
) ) ;
853
967
}
@@ -889,6 +1003,43 @@ describe('Contextual Hash routers', function() {
889
1003
} ) ;
890
1004
} ) ;
891
1005
1006
+
1007
+ it ( 'does navigate to root context from nested' , function ( done ) {
1008
+ assertRendered ( 'mainpage' ) ;
1009
+ router . navigate ( '/subcat/back_to_parent' , function ( ) {
1010
+ assertRendered ( 'subcat/back_to_parent' ) ;
1011
+ clickOn ( router . refs . subcat . refs . router . refs . link ) ;
1012
+ delay ( function ( ) {
1013
+ assertRendered ( 'mainpage' ) ;
1014
+ done ( ) ;
1015
+ } ) ;
1016
+ } ) ;
1017
+ } ) ;
1018
+
1019
+ it ( 'does navigate to nested context from double nested' , function ( done ) {
1020
+ assertRendered ( 'mainpage' ) ;
1021
+ router . navigate ( '/subcat/subsubcat/back_to_parent' , function ( ) {
1022
+ assertRendered ( 'subcat/subsubcat/back_to_parent' ) ;
1023
+ clickOn ( router . refs . subcat . refs . router . refs . subsubcat . refs . router . refs . link ) ;
1024
+ delay ( function ( ) {
1025
+ assertRendered ( 'subcat/root' ) ;
1026
+ done ( ) ;
1027
+ } ) ;
1028
+ } ) ;
1029
+ } ) ;
1030
+
1031
+ it ( 'does navigate to root context from double nested' , function ( done ) {
1032
+ assertRendered ( 'mainpage' ) ;
1033
+ router . navigate ( '/subcat/subsubcat/back_to_root' , function ( ) {
1034
+ assertRendered ( 'subcat/subsubcat/back_to_root' ) ;
1035
+ clickOn ( router . refs . subcat . refs . router . refs . subsubcat . refs . router . refs . link ) ;
1036
+ delay ( function ( ) {
1037
+ assertRendered ( 'mainpage' ) ;
1038
+ done ( ) ;
1039
+ } ) ;
1040
+ } ) ;
1041
+ } ) ;
1042
+
892
1043
} ) ;
893
1044
894
1045
} ) ;
0 commit comments