@@ -1476,14 +1476,46 @@ describe("a router", () => {
14761476 } ) ;
14771477 } ) ;
14781478
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 ( ) => {
14801480 let t = initializeTmTest ( ) ;
14811481 expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
14821482 let A = await t . navigate ( "/#bar" ) ;
14831483 expect ( A . loaders . root . stub . mock . calls . length ) . toBe ( 0 ) ;
14841484 expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
14851485 } ) ;
14861486
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+
14871519 it ( 'does not load anything on hash change only empty <Form method="get"> navigations' , async ( ) => {
14881520 let t = initializeTmTest ( ) ;
14891521 expect ( t . router . state . loaderData ) . toMatchObject ( { root : "ROOT" } ) ;
0 commit comments