Skip to content

Commit 4539e15

Browse files
committed
test: allow empty names
1 parent 45de2b7 commit 4539e15

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

src/codegen/generateRouteMap.spec.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,44 @@ describe('generateRouteNamedMap', () => {
329329
"'/parent/alpha' | '/parent/beta' | '/parent/zebra'"
330330
)
331331
})
332+
333+
it('excludes routes with empty names from route map', () => {
334+
const tree = new PrefixTree(DEFAULT_OPTIONS)
335+
tree.insert('parent', 'parent.vue')
336+
tree.insert('child', 'child.vue')
337+
tree.insert('parent/child', 'parent/child.vue')
338+
339+
// Set empty name for the parent route
340+
const parentNode = tree.children.get('parent')!
341+
parentNode.value.setOverride('parent', { name: '' })
342+
343+
expect(formatExports(generateRouteNamedMap(tree))).toMatchInlineSnapshot(`
344+
"export interface RouteNamedMap {
345+
'/child': RouteRecordInfo<'/child', '/child', Record<never, never>, Record<never, never>>,
346+
'/parent/child': RouteRecordInfo<'/parent/child', '/parent/child', Record<never, never>, Record<never, never>>,
347+
}"
348+
`)
349+
})
350+
351+
it('excludes child routes with empty names from parent children union', () => {
352+
const tree = new PrefixTree(DEFAULT_OPTIONS)
353+
tree.insert('parent', 'parent.vue')
354+
tree.insert('parent/child1', 'parent/child1.vue')
355+
tree.insert('parent/child2', 'parent/child2.vue')
356+
tree.insert('parent/child3', 'parent/child3.vue')
357+
358+
// Set empty name for child2
359+
const child2Node = tree.children.get('parent')!.children.get('child2')!
360+
child2Node.value.setOverride('parent/child2', { name: '' })
361+
362+
expect(formatExports(generateRouteNamedMap(tree))).toMatchInlineSnapshot(`
363+
"export interface RouteNamedMap {
364+
'/parent': RouteRecordInfo<'/parent', '/parent', Record<never, never>, Record<never, never>, '/parent/child1' | '/parent/child3'>,
365+
'/parent/child1': RouteRecordInfo<'/parent/child1', '/parent/child1', Record<never, never>, Record<never, never>>,
366+
'/parent/child3': RouteRecordInfo<'/parent/child3', '/parent/child3', Record<never, never>, Record<never, never>>,
367+
}"
368+
`)
369+
})
332370
})
333371

334372
/**

src/core/tree.spec.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,29 @@ describe('Tree', () => {
402402
expect(node.name).toBe('custom-child')
403403
})
404404

405+
it('allows empty name to remove route from route map', () => {
406+
const tree = new PrefixTree(RESOLVED_OPTIONS)
407+
let node = tree.insert('some-route', 'some-route.vue')
408+
409+
// Before setting empty name, it should use the default name
410+
expect(node.name).toBe('/some-route')
411+
412+
// Set empty name
413+
node.value.setOverride('', {
414+
name: '',
415+
})
416+
expect(node.name).toBe('')
417+
418+
// Test with nested route
419+
node = tree.insert('nested/child', 'nested/child.vue')
420+
expect(node.name).toBe('/nested/child')
421+
422+
node.value.setOverride('', {
423+
name: '',
424+
})
425+
expect(node.name).toBe('')
426+
})
427+
405428
it('allows a custom path', () => {
406429
const tree = new PrefixTree(RESOLVED_OPTIONS)
407430
let node = tree.insert('[a]-[b]', '[a]-[b].vue')

0 commit comments

Comments
 (0)