]> git.ipfire.org Git - thirdparty/vuejs/router.git/commitdiff
fix(query): empty object with custom stringify
authorEduardo San Martin Morote <posva13@gmail.com>
Mon, 9 Aug 2021 07:48:39 +0000 (09:48 +0200)
committerEduardo San Martin Morote <posva13@gmail.com>
Mon, 9 Aug 2021 07:48:50 +0000 (09:48 +0200)
__tests__/router.spec.ts
src/router.ts

index 6bf25b089aa4970208d7fa66b7b6975b7e0dcbdd..6522f74e238a6871cdf9779fdf04ef8ebe779000 100644 (file)
@@ -149,17 +149,28 @@ describe('Router', () => {
   })
 
   it('allows to customize parseQuery', async () => {
-    const parseQuery = jest.fn()
+    const parseQuery = jest.fn(_ => ({}))
     const { router } = await newRouter({ parseQuery })
-    router.resolve('/foo?bar=baz')
+    const to = router.resolve('/foo?bar=baz')
     expect(parseQuery).toHaveBeenCalledWith('bar=baz')
+    expect(to.query).toEqual({})
   })
 
   it('allows to customize stringifyQuery', async () => {
-    const stringifyQuery = jest.fn()
+    const stringifyQuery = jest.fn(_ => '')
     const { router } = await newRouter({ stringifyQuery })
-    router.resolve({ query: { foo: 'bar' } })
+    const to = router.resolve({ query: { foo: 'bar' } })
     expect(stringifyQuery).toHaveBeenCalledWith({ foo: 'bar' })
+    expect(to.query).toEqual({ foo: 'bar' })
+    expect(to.fullPath).toBe('/')
+  })
+
+  it('creates an empty query with no query', async () => {
+    const stringifyQuery = jest.fn(_ => '')
+    const { router } = await newRouter({ stringifyQuery })
+    const to = router.resolve({ hash: '#a' })
+    expect(stringifyQuery).not.toHaveBeenCalled()
+    expect(to.query).toEqual({})
   })
 
   it('merges meta properties from parent to child', async () => {
index 28b8580373d0ea072471becdcb4b63d03c74c13f..65900c664aad098955c8e713465ae13b3acd0460 100644 (file)
@@ -542,7 +542,7 @@ export function createRouter(options: RouterOptions): Router {
           // https://github.com/vuejs/vue-router-next/issues/328#issuecomment-649481567
           stringifyQuery === originalStringifyQuery
             ? normalizeQuery(rawLocation.query)
-            : (rawLocation.query as LocationQuery),
+            : ((rawLocation.query || {}) as LocationQuery),
       },
       matchedRoute,
       {