it.skip('warns on null location during dev', async () => {})
- it.skip('removes null/undefined optional params when current location has it', async () => {})
+ it('can pass an optional param', async () => {
+ const { router } = await newRouter()
+ expect(
+ router.resolve({ name: 'optional', params: { p: 'a' } })
+ ).toHaveProperty('params', { p: 'a' })
+ })
+
+ it('removes optional params when current location has it', async () => {
+ const { router } = await newRouter()
- it('keeps empty strings in optional params', async () => {
+ await router.push({ name: 'optional', params: { p: 'a' } })
+ await router.push({ name: 'optional', params: { p: null } })
+ expect(router.currentRoute.value.params).toEqual({ p: null })
+
+ await router.push({ name: 'optional', params: { p: 'a' } })
+ await router.push({ name: 'optional', params: { p: undefined } })
+ expect(router.currentRoute.value.params).toEqual({ p: null })
+
+ await router.push({ name: 'optional', params: { p: 'a' } })
+ await router.push({ name: 'optional', params: {} })
+ expect(router.currentRoute.value.params).toEqual({ p: null })
+ })
+
+ it('keeps consistent optional null param value', async () => {
const { router } = await newRouter()
expect(
router.resolve({ name: 'optional', params: { p: '' } })
'params',
{ p: null }
)
+ expect(router.resolve({ name: 'optional' })).toHaveProperty('params', {
+ p: null,
+ })
+ expect(router.resolve('/optional').params).toEqual({ p: null })
+ })
+
+ it('does not fail for missing optional params', async () => {
+ const { router } = await newRouter()
+ expect(
+ router.resolve({
+ name: 'optional',
+ params: {},
+ })
+ ).toHaveProperty('name', 'optional')
+
+ expect(router.resolve({ name: 'optional' })).toHaveProperty(
+ 'name',
+ 'optional'
+ )
})
it('navigates to same route record but different query', async () => {
it.skip('fails with arrays for non repeatable params', async () => {})
- it.skip('does not fail for optional params', async () => {})
-
it('can redirect to a star route when encoding the param', () => {
const testCatchAllMatcher = new MatcherPatternPathDynamic(
/^\/(.*)$/,