11import { describe , it , vi } from 'vitest'
22import { createRouter , type RouteFactory } from './createRouter'
33import { type ComponentType } from 'react'
4- import { type MiddlewareProps , type PrefetchFunc } from './router'
4+ import { type MiddlewareProps , type PrefetchContext , type PrefetchFunc } from './router'
55
66/**
77 * Stub component used in tests where a real React component
@@ -34,15 +34,19 @@ function createMiddleware(): ComponentType<MiddlewareProps> {
3434}
3535
3636/**
37- * Creates a mock NavigationPrecommitController with spy
38- * methods . Each test that needs one creates its own to
37+ * Creates a mock PrefetchContext with spy methods on the
38+ * controller . Each test that needs one creates its own to
3939 * avoid shared state between concurrent tests.
4040 */
41- function createMockController ( ) {
41+ function createMockContext ( ) : PrefetchContext {
4242 return {
43- redirect : vi . fn ( ) ,
44- addHandler : vi . fn ( ) ,
45- } as unknown as NavigationPrecommitController
43+ params : { } ,
44+ url : new URL ( 'http://localhost/' ) ,
45+ controller : {
46+ redirect : vi . fn ( ) ,
47+ addHandler : vi . fn ( ) ,
48+ } as unknown as NavigationPrecommitController ,
49+ }
4650}
4751
4852describe ( 'createRouter' , { concurrent : true } , function ( ) {
@@ -210,9 +214,9 @@ describe('createRouter', { concurrent: true }, function () {
210214 . render ( Stub )
211215 } )
212216
213- const controller = createMockController ( )
217+ const context = createMockContext ( )
214218
215- await router . match ( '/' ) ?. handler . prefetch ?.( controller )
219+ await router . match ( '/' ) ?. handler . prefetch ?.( context )
216220
217221 expect ( order ) . toStrictEqual ( [ 1 , 2 ] )
218222 } )
@@ -271,11 +275,11 @@ describe('createRouter', { concurrent: true }, function () {
271275 route ( '/old' ) . redirect ( '/new' )
272276 } )
273277
274- const controller = createMockController ( )
278+ const context = createMockContext ( )
275279
276- router . match ( '/old' ) ?. handler . prefetch ?.( controller )
280+ router . match ( '/old' ) ?. handler . prefetch ?.( context )
277281
278- expect ( controller . redirect ) . toHaveBeenCalledWith ( '/new' )
282+ expect ( context . controller . redirect ) . toHaveBeenCalledWith ( '/new' )
279283 } )
280284
281285 it ( 'uses a fallback component that renders null' , function ( { expect } ) {
@@ -306,11 +310,11 @@ describe('createRouter', { concurrent: true }, function () {
306310 app ( '/legacy' ) . redirect ( '/new-page' )
307311 } )
308312
309- const controller = createMockController ( )
313+ const context = createMockContext ( )
310314
311- router . match ( '/app/legacy' ) ?. handler . prefetch ?.( controller )
315+ router . match ( '/app/legacy' ) ?. handler . prefetch ?.( context )
312316
313- expect ( controller . redirect ) . toHaveBeenCalledWith ( '/new-page' )
317+ expect ( context . controller . redirect ) . toHaveBeenCalledWith ( '/new-page' )
314318 } )
315319 } )
316320
@@ -392,9 +396,9 @@ describe('createRouter', { concurrent: true }, function () {
392396 prefetched ( '/page' ) . prefetch ( routePrefetch ) . render ( Stub )
393397 } )
394398
395- const controller = createMockController ( )
399+ const context = createMockContext ( )
396400
397- await router . match ( '/page' ) ?. handler . prefetch ?.( controller )
401+ await router . match ( '/page' ) ?. handler . prefetch ?.( context )
398402
399403 expect ( order ) . toStrictEqual ( [ 1 , 2 ] )
400404 } )
@@ -408,11 +412,11 @@ describe('createRouter', { concurrent: true }, function () {
408412 prefetched ( '/page' ) . render ( Stub )
409413 } )
410414
411- const controller = createMockController ( )
415+ const context = createMockContext ( )
412416
413- await router . match ( '/page' ) ?. handler . prefetch ?.( controller )
417+ await router . match ( '/page' ) ?. handler . prefetch ?.( context )
414418
415- expect ( groupPrefetch ) . toHaveBeenCalledWith ( controller )
419+ expect ( groupPrefetch ) . toHaveBeenCalledWith ( context )
416420 } )
417421 } )
418422
@@ -462,9 +466,9 @@ describe('createRouter', { concurrent: true }, function () {
462466 inner ( '/deep' ) . prefetch ( third ) . render ( Stub )
463467 } )
464468
465- const controller = createMockController ( )
469+ const context = createMockContext ( )
466470
467- await router . match ( '/deep' ) ?. handler . prefetch ?.( controller )
471+ await router . match ( '/deep' ) ?. handler . prefetch ?.( context )
468472
469473 expect ( order ) . toStrictEqual ( [ 1 , 2 , 3 ] )
470474 } )
0 commit comments