@@ -1407,6 +1407,59 @@ describe('beforeLoad in the route definition', () => {
1407
1407
expect ( mock ) . toHaveBeenCalledWith ( { foo : 'bar' , layout : 'layout' } )
1408
1408
expect ( mock ) . toHaveBeenCalledTimes ( 1 )
1409
1409
} )
1410
+
1411
+ test ( 'child route receives updated values after the values were previously returned by the child route and then updated by the parent route' , async ( ) => {
1412
+ const mockIndexBeforeLoadFn = vi . fn ( )
1413
+ let counter = 0
1414
+
1415
+ const rootRoute = createRootRoute ( {
1416
+ beforeLoad : ( ) => {
1417
+ counter ++
1418
+ return {
1419
+ counter,
1420
+ }
1421
+ } ,
1422
+ } )
1423
+ const indexRoute = createRoute ( {
1424
+ getParentRoute : ( ) => rootRoute ,
1425
+ path : '/' ,
1426
+ beforeLoad : ( { context } ) => {
1427
+ mockIndexBeforeLoadFn ( context )
1428
+ return {
1429
+ counter : context . counter ,
1430
+ }
1431
+ } ,
1432
+ component : ( ) => {
1433
+ const { counter } = indexRoute . useRouteContext ( )
1434
+ return (
1435
+ < div >
1436
+ < span data-testid = "index-page" > Index page</ span >
1437
+ < span data-testid = "counter" > { counter } </ span >
1438
+ </ div >
1439
+ )
1440
+ } ,
1441
+ } )
1442
+ const routeTree = rootRoute . addChildren ( [ indexRoute ] )
1443
+ const router = createRouter ( { routeTree, history } )
1444
+
1445
+ render ( < RouterProvider router = { router } /> )
1446
+
1447
+ const rootElement = await screen . findByTestId ( 'index-page' )
1448
+ expect ( rootElement ) . toBeInTheDocument ( )
1449
+
1450
+ async function check ( expectedCounter : number ) {
1451
+ const counterElement = await screen . findByTestId ( 'counter' )
1452
+ expect ( counterElement ) . toHaveTextContent ( `${ expectedCounter } ` )
1453
+
1454
+ expect ( mockIndexBeforeLoadFn ) . toHaveBeenCalledWith ( {
1455
+ counter : expectedCounter ,
1456
+ } )
1457
+ }
1458
+
1459
+ await check ( 1 )
1460
+ await router . invalidate ( )
1461
+ await check ( 2 )
1462
+ } )
1410
1463
} )
1411
1464
1412
1465
describe ( 'loader in the route definition' , ( ) => {
0 commit comments