From 08292f4ea08fbf004ac695cba8790e133c3a33b6 Mon Sep 17 00:00:00 2001 From: Bijay Deo Date: Fri, 4 Sep 2015 12:49:01 -0400 Subject: [PATCH 1/3] update angular-mocks.js url matching url matching was incorrect and updated. if all query parameters in url are in different order, it should still match --- src/ngMock/angular-mocks.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 579831314de4..137b6602068f 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -1628,7 +1628,7 @@ function MockHttpExpectation(method, url, data, headers) { 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 || this.compareUrl(u)); }; this.matchHeaders = function(h) { @@ -1646,6 +1646,15 @@ function MockHttpExpectation(method, url, data, headers) { } return data == d; }; + + this.getUrlParams = function (u){ + var params = u.slice(u.indexOf('?') + 1).split('&'); + return params.sort(); + }; + + this.compareUrl = function (u){ + return (url.slice(0,url.indexOf('?')) == u.slice(0,url.indexOf('?')) && this.getUrlParams(url).join() == this.getUrlParams(u).join()) + }; this.toString = function() { return method + ' ' + url; From e6ef7f9715b9441b9bab886c9f1b5aa7115649cf Mon Sep 17 00:00:00 2001 From: Bijay Deo Date: Fri, 4 Sep 2015 13:03:40 -0400 Subject: [PATCH 2/3] small bug fix related previous change request --- src/ngMock/angular-mocks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 137b6602068f..b7ae6d869c6e 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -1653,7 +1653,7 @@ function MockHttpExpectation(method, url, data, headers) { }; this.compareUrl = function (u){ - return (url.slice(0,url.indexOf('?')) == u.slice(0,url.indexOf('?')) && this.getUrlParams(url).join() == this.getUrlParams(u).join()) + return (url.slice(0,url.indexOf('?')) == u.slice(0,u.indexOf('?')) && this.getUrlParams(url).join() == this.getUrlParams(u).join()) }; this.toString = function() { From fee9d971915f5e459e03614d0f0ef9e8075dc116 Mon Sep 17 00:00:00 2001 From: bijaydeo Date: Mon, 1 Feb 2016 00:43:25 -0500 Subject: [PATCH 3/3] test case for pull request #12762 --- test/ngMock/angular-mocksSpec.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js index 711b3c09390f..0859a042a2d1 100644 --- a/test/ngMock/angular-mocksSpec.js +++ b/test/ngMock/angular-mocksSpec.js @@ -1515,6 +1515,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) {