You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 12, 2024. It is now read-only.
Repository navigation
This repository was archived by the owner on Apr 12, 2024. It is now read-only.
ngMock: wrong parsing of pathParams when there are queryParams #14173
Do you want to request a feature or report a bug?
This is a bug.
What is the current behavior? httpBackend.whenRoute() does not parse correctly the path-parameters when they are immediately followed by query-parameters.
Consider the following example: $httpBackend.whenRoute('DELETE', '/api/resource/:_id').respond((method, url, data, header, params) => {}
If whenRoute is triggered by /api/resource/1?q=hello, params will contain wrong parsing of the id:
params = {id: '1?q=hello', 'q': 'hello'}
What is the expected behavior? params = {id: '1', q: 'hello'}
What is the motivation / use case for changing the behavior?
This behaviour looks wrong and inconsistent.
Which version of Angular, and which browser and OS does this issue affect? Did this work in previous
versions of Angular? Please also test with the latest stable and snapshot versions.
Angular 1.5, in previous releases params was not generated
Other information (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix)
(Almost) the same logic is used in ngMock's parseRoute() and ngResource's pathRegExp().
(It should be the same logic, but they seem to have gotten slightly out of sync.)
The one intentional difference is this:
In ngResource we match the RegExp against $location.path() (not the whole URL, containing the query). Thus we don't have to take special care to avoid matching the query.
In ngMock, we need to have a way to ignore the query/hash part for whenRoute().
Activity
gkalpak commentedon Mar 5, 2016
A little background:
(Almost) the same logic is used in
ngMock's parseRoute() andngResource's pathRegExp().(It should be the same logic, but they seem to have gotten slightly out of sync.)
The one intentional difference is this:
In
ngResourcewe match the RegExp against$location.path()(not the whole URL, containing the query). Thus we don't have to take special care to avoid matching the query.In
ngMock, we need to have a way to ignore the query/hash part forwhenRoute().ferrao commentedon Oct 27, 2016
👍
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…
fix(ngMock/$httpBackend): correctly ignore query params in {expect,wh…