@@ -819,63 +819,48 @@ const TASK_ROUTES: TestRouteObject[] = [
819
819
} ,
820
820
] ;
821
821
822
- const TM_ROUTES = [
822
+ const TM_ROUTES : TestRouteObject [ ] = [
823
823
{
824
824
path : "" ,
825
825
id : "root" ,
826
-
827
- module : "" ,
828
826
hasErrorBoundary : true ,
829
827
loader : true ,
830
828
children : [
831
829
{
832
830
path : "/" ,
833
831
id : "index" ,
834
- hasLoader : true ,
835
832
loader : true ,
836
833
action : true ,
837
-
838
- module : "" ,
839
834
} ,
840
835
{
841
836
path : "/foo" ,
842
837
id : "foo" ,
843
838
loader : true ,
844
839
action : true ,
845
-
846
- module : "" ,
847
840
} ,
848
841
{
849
842
path : "/foo/bar" ,
850
843
id : "foobar" ,
851
844
loader : true ,
852
845
action : true ,
853
-
854
- module : "" ,
855
846
} ,
856
847
{
857
848
path : "/bar" ,
858
849
id : "bar" ,
859
850
loader : true ,
860
851
action : true ,
861
-
862
- module : "" ,
863
852
} ,
864
853
{
865
854
path : "/baz" ,
866
855
id : "baz" ,
867
856
loader : true ,
868
857
action : true ,
869
-
870
- module : "" ,
871
858
} ,
872
859
{
873
860
path : "/p/:param" ,
874
861
id : "param" ,
875
862
loader : true ,
876
863
action : true ,
877
-
878
- module : "" ,
879
864
} ,
880
865
] ,
881
866
} ,
@@ -1380,14 +1365,68 @@ describe("a router", () => {
1380
1365
} ) ;
1381
1366
} ) ;
1382
1367
1383
- it ( "does not load anything on hash change only" , async ( ) => {
1368
+ it ( "does not load anything on hash change only <Link> navigations " , async ( ) => {
1384
1369
let t = initializeTmTest ( ) ;
1385
1370
expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1386
1371
let A = await t . navigate ( "/#bar" ) ;
1387
1372
expect ( A . loaders . root . stub . mock . calls . length ) . toBe ( 0 ) ;
1388
1373
expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1389
1374
} ) ;
1390
1375
1376
+ it ( 'does not load anything on hash change only empty <Form method="get"> navigations' , async ( ) => {
1377
+ let t = initializeTmTest ( ) ;
1378
+ expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1379
+ let A = await t . navigate ( "/#bar" , {
1380
+ formData : createFormData ( { } ) ,
1381
+ } ) ;
1382
+ expect ( A . loaders . root . stub . mock . calls . length ) . toBe ( 0 ) ;
1383
+ expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1384
+ } ) ;
1385
+
1386
+ it ( 'runs loaders on hash change only non-empty <Form method="get"> navigations' , async ( ) => {
1387
+ let t = initializeTmTest ( ) ;
1388
+ expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1389
+ let A = await t . navigate ( "/#bar" , {
1390
+ formData : createFormData ( { key : "value" } ) ,
1391
+ } ) ;
1392
+ await A . loaders . root . resolve ( "ROOT 2" ) ;
1393
+ await A . loaders . index . resolve ( "INDEX 2" ) ;
1394
+ expect ( t . router . state . location . search ) . toBe ( "?key=value" ) ;
1395
+ expect ( t . router . state . loaderData ) . toMatchObject ( {
1396
+ root : "ROOT 2" ,
1397
+ index : "INDEX 2" ,
1398
+ } ) ;
1399
+ } ) ;
1400
+
1401
+ it ( 'runs action/loaders on hash change only <Form method="post"> navigations' , async ( ) => {
1402
+ let t = initializeTmTest ( ) ;
1403
+ let A = await t . navigate ( "/foo#bar" ) ;
1404
+ expect ( t . router . state . navigation . state ) . toBe ( "loading" ) ;
1405
+ await A . loaders . foo . resolve ( "A" ) ;
1406
+ expect ( t . router . state . loaderData ) . toMatchObject ( {
1407
+ root : "ROOT" ,
1408
+ foo : "A" ,
1409
+ } ) ;
1410
+
1411
+ // Submit while we have an active hash causing us to lose it
1412
+ let B = await t . navigate ( "/foo" , {
1413
+ formMethod : "post" ,
1414
+ formData : createFormData ( { } ) ,
1415
+ } ) ;
1416
+ expect ( t . router . state . navigation . state ) . toBe ( "submitting" ) ;
1417
+ await B . actions . foo . resolve ( "ACTION" ) ;
1418
+ await B . loaders . root . resolve ( "ROOT 2" ) ;
1419
+ await B . loaders . foo . resolve ( "B" ) ;
1420
+ expect ( t . router . state . navigation . state ) . toBe ( "idle" ) ;
1421
+ expect ( t . router . state . actionData ) . toMatchObject ( {
1422
+ foo : "ACTION" ,
1423
+ } ) ;
1424
+ expect ( t . router . state . loaderData ) . toMatchObject ( {
1425
+ root : "ROOT 2" ,
1426
+ foo : "B" ,
1427
+ } ) ;
1428
+ } ) ;
1429
+
1391
1430
it ( "sets all right states on hash change only" , async ( ) => {
1392
1431
let t = initializeTmTest ( ) ;
1393
1432
let key = t . router . state . location . key ;
@@ -2396,7 +2435,6 @@ describe("a router", () => {
2396
2435
children : expect . any ( Array ) ,
2397
2436
id : "root" ,
2398
2437
loader : expect . any ( Function ) ,
2399
- module : "" ,
2400
2438
path : "" ,
2401
2439
} ,
2402
2440
} ,
@@ -2473,7 +2511,6 @@ describe("a router", () => {
2473
2511
children : expect . any ( Array ) ,
2474
2512
id : "root" ,
2475
2513
loader : expect . any ( Function ) ,
2476
- module : "" ,
2477
2514
path : "" ,
2478
2515
} ,
2479
2516
} ,
0 commit comments