@@ -1476,14 +1476,46 @@ describe("a router", () => {
1476
1476
} ) ;
1477
1477
} ) ;
1478
1478
1479
- it ( "does not load anything on hash change only <Link> navigations" , async ( ) => {
1479
+ it ( "does not run loaders on hash change only navigations" , async ( ) => {
1480
1480
let t = initializeTmTest ( ) ;
1481
1481
expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1482
1482
let A = await t . navigate ( "/#bar" ) ;
1483
1483
expect ( A . loaders . root . stub . mock . calls . length ) . toBe ( 0 ) ;
1484
1484
expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1485
1485
} ) ;
1486
1486
1487
+ it ( "does not run loaders on same-hash navigations" , async ( ) => {
1488
+ let t = initializeTmTest ( { url : "/#bar" } ) ;
1489
+ expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1490
+ let A = await t . navigate ( "/#bar" ) ;
1491
+ expect ( A . loaders . root . stub . mock . calls . length ) . toBe ( 0 ) ;
1492
+ expect ( A . loaders . index . stub . mock . calls . length ) . toBe ( 0 ) ;
1493
+ } ) ;
1494
+
1495
+ it ( "runs loaders on same-hash navigations to new paths" , async ( ) => {
1496
+ let t = initializeTmTest ( { url : "/#bar" } ) ;
1497
+ expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1498
+ let A = await t . navigate ( "/foo#bar" ) ;
1499
+ expect ( A . loaders . root . stub . mock . calls . length ) . toBe ( 0 ) ;
1500
+ expect ( A . loaders . foo . stub . mock . calls . length ) . toBe ( 1 ) ;
1501
+ } ) ;
1502
+
1503
+ it ( "runs loaders on hash removal navigations (same path)" , async ( ) => {
1504
+ let t = initializeTmTest ( { url : "/#bar" } ) ;
1505
+ expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1506
+ let A = await t . navigate ( "/" ) ;
1507
+ expect ( A . loaders . root . stub . mock . calls . length ) . toBe ( 1 ) ;
1508
+ expect ( A . loaders . index . stub . mock . calls . length ) . toBe ( 1 ) ;
1509
+ } ) ;
1510
+
1511
+ it ( "runs loaders on hash removal navigations (nested path)" , async ( ) => {
1512
+ let t = initializeTmTest ( { url : "/#bar" } ) ;
1513
+ expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
1514
+ let A = await t . navigate ( "/foo" ) ;
1515
+ expect ( A . loaders . root . stub . mock . calls . length ) . toBe ( 0 ) ;
1516
+ expect ( A . loaders . foo . stub . mock . calls . length ) . toBe ( 1 ) ;
1517
+ } ) ;
1518
+
1487
1519
it ( 'does not load anything on hash change only empty <Form method="get"> navigations' , async ( ) => {
1488
1520
let t = initializeTmTest ( ) ;
1489
1521
expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
0 commit comments