Skip to content
Permalink
Browse files

fix(ngMock): match HTTP request regardless of the order of query params

Closes #12762
  • Loading branch information
deodeveloper authored and petebacondarwin committed Sep 4, 2015
1 parent e00f9f6 commit 363fb16c1076a806bb31006daaf583ab5c82e467
Showing with 15 additions and 1 deletion.
  1. +10 −1 src/ngMock/angular-mocks.js
  2. +5 −0 test/ngMock/angular-mocksSpec.js
@@ -1871,6 +1871,15 @@ function createHttpBackendMock($rootScope, $timeout, $delegate, $browser) {

function MockHttpExpectation(method, url, data, headers, keys) {

function getUrlParams(u) {
var params = u.slice(u.indexOf('?') + 1).split('&');
return params.sort();
}

function compareUrl(u) {
return (url.slice(0, url.indexOf('?')) == u.slice(0, u.indexOf('?')) && getUrlParams(url).join() == getUrlParams(u).join());
}

this.data = data;
this.headers = headers;

@@ -1886,7 +1895,7 @@ function MockHttpExpectation(method, url, data, headers, keys) {
if (!url) return true;
if (angular.isFunction(url.test)) return url.test(u);
if (angular.isFunction(url)) return url(u);
return url == u;
return (url == u || compareUrl(u));
};

this.matchHeaders = function(h) {
@@ -1633,6 +1633,11 @@ describe('ngMock', function() {
expect(exp.match('GET', 'a/x')).toBe(false);
});

it('should match url with same query params, but different order', function() {
var exp = new MockHttpExpectation('GET', 'www.example.com/x/y?a=b&c=d&e=f');

expect(exp.matchUrl('www.example.com/x/y?e=f&c=d&a=b')).toBe(true);
});

it('should accept url as function', function() {
var urlValidator = function(url) {

0 comments on commit 363fb16

Please sign in to comment.
You can’t perform that action at this time.