@@ -183,6 +183,7 @@ definePage({
183183 expect ( extractDefinePageInfo ( sampleCode , 'src/pages/basic.vue' ) ) . toEqual ( {
184184 name : 'custom' ,
185185 path : '/custom' ,
186+ hasRemainingProperties : false ,
186187 } )
187188 } )
188189
@@ -217,6 +218,7 @@ definePage({
217218 expect (
218219 extractDefinePageInfo ( codeWithAllParams , 'src/pages/test.vue' )
219220 ) . toEqual ( {
221+ hasRemainingProperties : false ,
220222 params : {
221223 path : {
222224 userId : 'int' ,
@@ -253,6 +255,7 @@ definePage({
253255`
254256 expect ( extractDefinePageInfo ( code , 'src/pages/test.vue' ) ) . toEqual ( {
255257 alias : [ '/other' ] ,
258+ hasRemainingProperties : false ,
256259 } )
257260 } )
258261
@@ -266,6 +269,7 @@ definePage({
266269`
267270 expect ( extractDefinePageInfo ( code , 'src/pages/test.vue' ) ) . toEqual ( {
268271 alias : [ '/a' , '/b' ] ,
272+ hasRemainingProperties : false ,
269273 } )
270274 } )
271275
@@ -277,7 +281,9 @@ definePage({
277281})
278282</script>
279283`
280- expect ( extractDefinePageInfo ( code , 'src/pages/test.vue' ) ) . toEqual ( { } )
284+ expect ( extractDefinePageInfo ( code , 'src/pages/test.vue' ) ) . toEqual ( {
285+ hasRemainingProperties : false ,
286+ } )
281287 expect (
282288 'route alias must be a string literal or an array of string literals'
283289 ) . toHaveBeenWarned ( )
@@ -292,7 +298,9 @@ definePage({
292298})
293299</script>
294300`
295- expect ( extractDefinePageInfo ( code , 'src/pages/test.vue' ) ) . toEqual ( { } )
301+ expect ( extractDefinePageInfo ( code , 'src/pages/test.vue' ) ) . toEqual ( {
302+ hasRemainingProperties : false ,
303+ } )
296304 expect (
297305 'route alias must be a string literal or an array of string literals'
298306 ) . toHaveBeenWarned ( )
@@ -308,6 +316,51 @@ definePage({
308316`
309317 expect ( extractDefinePageInfo ( code , 'src/pages/test.vue' ) ) . toEqual ( {
310318 alias : [ '/a' , '/b' ] ,
319+ hasRemainingProperties : false ,
320+ } )
321+
322+ expect (
323+ `route alias array must only contain string literals.`
324+ ) . toHaveBeenWarned ( )
325+ } )
326+
327+ describe ( 'hasRemainingProperties' , ( ) => {
328+ it ( 'is false when only name/path/alias/params are present' , ( ) => {
329+ const code = vue `
330+ <script setup>
331+ definePage({
332+ name: 'home',
333+ path: '/home',
334+ alias: ['/'],
335+ params: { path: { id: 'int' } },
336+ })
337+ </script>
338+ `
339+ const result = extractDefinePageInfo ( code , 'src/pages/test.vue' )
340+ expect ( result ?. hasRemainingProperties ) . toBe ( false )
341+ } )
342+
343+ it ( 'is true when meta is present' , ( ) => {
344+ const code = vue `
345+ <script setup>
346+ definePage({
347+ name: 'home',
348+ meta: { requiresAuth: true },
349+ })
350+ </script>
351+ `
352+ const result = extractDefinePageInfo ( code , 'src/pages/test.vue' )
353+ expect ( result ?. hasRemainingProperties ) . toBe ( true )
354+ } )
355+
356+ it ( 'is false for empty definePage object' , ( ) => {
357+ const code = vue `
358+ <script setup>
359+ definePage({})
360+ </script>
361+ `
362+ const result = extractDefinePageInfo ( code , 'src/pages/test.vue' )
363+ expect ( result ?. hasRemainingProperties ) . toBe ( false )
311364 } )
312365 } )
313366
@@ -383,6 +436,7 @@ export default {
383436 ) . toEqual ( {
384437 name : 'custom' ,
385438 path : '/custom' ,
439+ hasRemainingProperties : false ,
386440 } )
387441 } )
388442
0 commit comments