From: Eduardo San Martin Morote Date: Fri, 23 Jan 2026 20:00:13 +0000 (+0100) Subject: test: query params X-Git-Tag: v5.0.0~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e3bf720c3034ea34d59c405645d993ccc90690eb;p=thirdparty%2Fvuejs%2Frouter.git test: query params --- diff --git a/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.spec.ts b/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.spec.ts index f4c0ce6dc..1602f09b4 100644 --- a/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.spec.ts +++ b/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.spec.ts @@ -356,6 +356,19 @@ describe('MatcherPatternQueryParam', () => { expect(() => matcher.match({ c: 'invalid' })).toThrow(MatchMiss) }) + it('falls back to default on parser error even when required', () => { + const matcher = new MatcherPatternQueryParam( + 'count', + 'c', + 'value', + PARAM_PARSER_INT, + 0, // default value + true // required + ) + // Invalid value should fallback to default instead of throwing + expect(matcher.match({ c: 'invalid' })).toEqual({ count: 0 }) + }) + it('returns empty array for missing optional param with array format', () => { const matcher = new MatcherPatternQueryParam( 'items', diff --git a/packages/router/src/unplugin/codegen/generateRouteResolver.spec.ts b/packages/router/src/unplugin/codegen/generateRouteResolver.spec.ts index 9dd51098b..55bb1f250 100644 --- a/packages/router/src/unplugin/codegen/generateRouteResolver.spec.ts +++ b/packages/router/src/unplugin/codegen/generateRouteResolver.spec.ts @@ -195,6 +195,20 @@ describe('generateRouteRecordQuery', () => { `) }) + it('generates query param with required and default', () => { + const node = new PrefixTree(DEFAULT_OPTIONS).insert('a', 'a.vue') + node.value.setEditOverride('params', { + query: { page: { parser: 'int', default: '1', required: true } }, + }) + expect( + generateRouteRecordQuery({ importsMap, node, paramParsersMap: new Map() }) + ).toMatchInlineSnapshot(` + "query: [ + new MatcherPatternQueryParam('page', 'page', 'value', PARAM_PARSER_INT, 1, true) + ]," + `) + }) + it('generates mixed query params with different configurations', () => { const node = new PrefixTree(DEFAULT_OPTIONS).insert('a', 'a.vue') node.value.setEditOverride('params', {