2019-05-30 22:42:45 +02:00
|
|
|
/* eslint-env jest */
|
2019-09-04 16:00:54 +02:00
|
|
|
import { getSortedRoutes } from 'next/dist/next-server/lib/router/utils/sorted-routes'
|
2019-05-30 22:42:45 +02:00
|
|
|
|
|
|
|
describe('getSortedRoutes', () => {
|
|
|
|
it('does not add extra routes', () => {
|
|
|
|
expect(getSortedRoutes(['/posts'])).toEqual(['/posts'])
|
|
|
|
|
2019-06-21 00:27:04 +02:00
|
|
|
expect(getSortedRoutes(['/posts/[id]'])).toEqual(['/posts/[id]'])
|
|
|
|
expect(getSortedRoutes(['/posts/[id]/foo'])).toEqual(['/posts/[id]/foo'])
|
2019-05-30 22:42:45 +02:00
|
|
|
|
2019-06-21 00:27:04 +02:00
|
|
|
expect(getSortedRoutes(['/posts/[id]/[foo]/bar'])).toEqual([
|
|
|
|
'/posts/[id]/[foo]/bar'
|
2019-05-30 22:42:45 +02:00
|
|
|
])
|
2019-06-21 00:27:04 +02:00
|
|
|
expect(getSortedRoutes(['/posts/[id]/baz/[foo]/bar'])).toEqual([
|
|
|
|
'/posts/[id]/baz/[foo]/bar'
|
2019-05-30 22:42:45 +02:00
|
|
|
])
|
|
|
|
})
|
|
|
|
|
|
|
|
it('correctly sorts required slugs', () => {
|
|
|
|
expect(
|
|
|
|
getSortedRoutes([
|
|
|
|
'/posts',
|
2019-06-21 00:27:04 +02:00
|
|
|
'/[root-slug]',
|
2019-05-30 22:42:45 +02:00
|
|
|
'/',
|
2019-06-21 00:27:04 +02:00
|
|
|
'/posts/[id]',
|
|
|
|
'/blog/[id]/comments/[cid]',
|
|
|
|
'/blog/[id]',
|
|
|
|
'/foo/[d]/bar/baz/[f]',
|
|
|
|
'/apples/[ab]/[cd]/ef'
|
2019-05-30 22:42:45 +02:00
|
|
|
])
|
|
|
|
).toMatchSnapshot()
|
|
|
|
})
|
2019-06-21 00:27:04 +02:00
|
|
|
|
|
|
|
it('catches mismatched param names', () => {
|
|
|
|
expect(() =>
|
|
|
|
getSortedRoutes([
|
|
|
|
'/',
|
|
|
|
'/blog',
|
|
|
|
'/blog/[id]',
|
|
|
|
'/blog/[id]/comments/[cid]',
|
|
|
|
'/blog/[cid]'
|
|
|
|
])
|
|
|
|
).toThrowError(/different slug names/)
|
|
|
|
})
|
2019-07-30 23:21:36 +02:00
|
|
|
|
|
|
|
it('catches reused param names', () => {
|
|
|
|
expect(() =>
|
|
|
|
getSortedRoutes(['/', '/blog', '/blog/[id]/comments/[id]', '/blog/[id]'])
|
|
|
|
).toThrowError(/the same slug name/)
|
|
|
|
})
|
2019-05-30 22:42:45 +02:00
|
|
|
})
|