From 1025f6ebf4e5933a12920889be00cd8ac8a106fa Mon Sep 17 00:00:00 2001 From: Bastien Caudan Date: Mon, 25 Nov 2013 18:00:21 +0100 Subject: [PATCH] fix(ngMock): $httpBackend should match data containing Date objects correctly If a response or expectation contained a date object then `$httpBackend.expect` was not matching correctly. This commit encodes then decodes the object being matched to ensure consistency. Closes #5127 --- src/ngMock/angular-mocks.js | 4 +++- test/ng/httpSpec.js | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 273ff637..17fc3659 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -1629,7 +1629,9 @@ function MockHttpExpectation(method, url, data, headers) { if (angular.isUndefined(data)) return true; if (data && angular.isFunction(data.test)) return data.test(d); if (data && angular.isFunction(data)) return data(d); - if (data && !angular.isString(data)) return angular.equals(data, angular.fromJson(d)); + if (data && !angular.isString(data)) { + return angular.equals(angular.fromJson(angular.toJson(data)), angular.fromJson(d)); + } return data == d; }; diff --git a/test/ng/httpSpec.js b/test/ng/httpSpec.js index 05902e27..f679e4df 100644 --- a/test/ng/httpSpec.js +++ b/test/ng/httpSpec.js @@ -929,6 +929,12 @@ describe('$http', function() { }); + it('should transform object with date into json', function() { + $httpBackend.expect('POST', '/url', {"date": new Date(Date.UTC(2013, 11, 25))}).respond(''); + $http({method: 'POST', url: '/url', data: {date: new Date(Date.UTC(2013, 11, 25))}}); + }); + + it('should ignore strings', function() { $httpBackend.expect('POST', '/url', 'string-data').respond(''); $http({method: 'POST', url: '/url', data: 'string-data'});