From a487563768780649737347a4e99f3198c3f21137 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Tue, 4 Apr 2017 09:01:39 -0700 Subject: [PATCH] fix(router): fix query param parsing --- packages/router/src/url_tree.ts | 2 +- packages/router/test/url_tree.spec.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/router/src/url_tree.ts b/packages/router/src/url_tree.ts index 2056876520..600f6bbb30 100644 --- a/packages/router/src/url_tree.ts +++ b/packages/router/src/url_tree.ts @@ -360,7 +360,7 @@ function matchSegments(str: string): string { const QUERY_PARAM_RE = /^[^=?&#]+/; // Return the name of the query param at the start of the string or an empty string function matchQueryParams(str: string): string { - const match = str.match(SEGMENT_RE); + const match = str.match(QUERY_PARAM_RE); return match ? match[0] : ''; } diff --git a/packages/router/test/url_tree.spec.ts b/packages/router/test/url_tree.spec.ts index f60151ddcc..1759e8814a 100644 --- a/packages/router/test/url_tree.spec.ts +++ b/packages/router/test/url_tree.spec.ts @@ -11,6 +11,20 @@ import {DefaultUrlSerializer, containsTree} from '../src/url_tree'; describe('UrlTree', () => { const serializer = new DefaultUrlSerializer(); + describe('DefaultUrlSerializer', () => { + let serializer: DefaultUrlSerializer; + + beforeEach(() => { serializer = new DefaultUrlSerializer(); }); + + it('should parse query parameters', () => { + const tree = serializer.parse('/path/to?k=v&k/(a;b)=c'); + expect(tree.queryParams).toEqual({ + 'k': 'v', + 'k/(a;b)': 'c', + }); + }); + }); + describe('containsTree', () => { describe('exact = true', () => { it('should return true when two tree are the same', () => {