Skip to content

Commit

Permalink
fix(utils): flat routes if child routes have absolute paths (#7604)
Browse files Browse the repository at this point in the history
  • Loading branch information
kedrzu committed Jun 25, 2020
1 parent d0056fb commit 4a0cf8f
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 5 deletions.
15 changes: 10 additions & 5 deletions packages/utils/src/route.js
Expand Up @@ -13,14 +13,19 @@ export const flatRoutes = function flatRoutes (router, fileName = '', routes = [
if (fileName === '' && r.path === '/') {
routes.push('/')
}

return flatRoutes(r.children, fileName + r.path + '/', routes)
}
fileName = fileName.replace(/\/+/g, '/')
routes.push(
(r.path === '' && fileName[fileName.length - 1] === '/'
? fileName.slice(0, -1)
: fileName) + r.path
)

// if child path is already absolute, do not make any concatenations
if (r.path && r.path.startsWith('/')) {
routes.push(r.path)
} else if (r.path === '' && fileName[fileName.length - 1] === '/') {
routes.push(fileName.slice(0, -1) + r.path)
} else {
routes.push(fileName + r.path)
}
})
return routes
}
Expand Down
31 changes: 31 additions & 0 deletions packages/utils/test/route.test.js
Expand Up @@ -40,6 +40,37 @@ describe('util: route', () => {
expect(routes).toEqual(['/', '/foo/bar', '/foo/baz'])
})

test('should flat absolute routes', () => {
const routes = flatRoutes([
{
name: 'foo',
path: '/foo',
children: [
{ name: 'foo-bar', path: '/foo/bar' },
{ name: 'foo-baz', path: '/foo/baz' }
]
}
])

expect(routes).toEqual(['/foo/bar', '/foo/baz'])
})

test('should flat absolute routes with empty path', () => {
const routes = flatRoutes([
{
name: 'foo',
path: '/foo',
children: [
{ name: 'foo-root', path: '' },
{ name: 'foo-bar', path: '/foo/bar' },
{ name: 'foo-baz', path: '/foo/baz' }
]
}
])

expect(routes).toEqual(['/foo', '/foo/bar', '/foo/baz'])
})

describe('util: route guard', () => {
test('should guard parent dir', () => {
expect(() => {
Expand Down

0 comments on commit 4a0cf8f

Please sign in to comment.