@@ -160,6 +160,60 @@ describe('vite plugin route refresh', () => {
160160 expect ( server . moduleGraph . invalidateModule ) . toHaveBeenCalledWith ( moduleNode )
161161 } )
162162
163+ it ( 'invalidates importer chains for virtual modules when routes change' , async ( ) => {
164+ const parsed = parseRouteTemplate ( '/ping' )
165+ mocks . scanRoutes . mockResolvedValueOnce ( [
166+ {
167+ file : '/root/mock/ping.get.json' ,
168+ template : parsed . template ,
169+ method : 'GET' ,
170+ tokens : parsed . tokens ,
171+ score : parsed . score ,
172+ handler : { ok : true } ,
173+ } ,
174+ ] )
175+
176+ const state = {
177+ routes : [ ] ,
178+ serverRoutes : [ ] ,
179+ swRoutes : [ ] ,
180+ disabledRoutes : [ ] ,
181+ ignoredRoutes : [ ] ,
182+ configFiles : [ ] ,
183+ disabledConfigFiles : [ ] ,
184+ app : null ,
185+ lastSignature : 'old' ,
186+ swModuleVersion : 0 ,
187+ }
188+
189+ const workerImporter = { id : '/worker/index.ts' , importers : new Set ( ) }
190+ const moduleNode = {
191+ id : '\0virtual:mokup-bundle' ,
192+ importers : new Set ( [ workerImporter ] ) ,
193+ }
194+ const server = {
195+ ws : { send : vi . fn ( ) } ,
196+ moduleGraph : {
197+ getModuleById : vi . fn ( ) . mockReturnValue ( moduleNode ) ,
198+ invalidateModule : vi . fn ( ) ,
199+ } ,
200+ }
201+
202+ const refresher = createRouteRefresher ( {
203+ state : state as never ,
204+ optionList : [ { dir : '/root/mock' , prefix : '/api' } ] ,
205+ root : ( ) => '/root' ,
206+ logger : { info : vi . fn ( ) , warn : vi . fn ( ) , error : vi . fn ( ) } ,
207+ enableViteMiddleware : false ,
208+ virtualModuleIds : [ '\0virtual:mokup-bundle' ] ,
209+ } )
210+
211+ await refresher ( server as never )
212+
213+ expect ( server . moduleGraph . invalidateModule ) . toHaveBeenCalledWith ( moduleNode )
214+ expect ( server . moduleGraph . invalidateModule ) . toHaveBeenCalledWith ( workerImporter )
215+ } )
216+
163217 it ( 'forces virtual module invalidation when signatures are unchanged' , async ( ) => {
164218 const parsed = parseRouteTemplate ( '/about' )
165219 const route = {
0 commit comments