From 4d16472b918a3482942d76f1e273a5aa01f65e83 Mon Sep 17 00:00:00 2001 From: Corey Burrows Date: Thu, 14 Nov 2013 08:42:35 -0600 Subject: fix(ngMock): fixes httpBackend expectation with body object Fixes an issue with httpBackend expectations where a given body object may not match the actual request body if its keys are serialized in a different order. Closes #4956 --- test/ngMock/angular-mocksSpec.js | 49 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'test/ngMock/angular-mocksSpec.js') diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js index 15ebc758..f96112fe 100644 --- a/test/ngMock/angular-mocksSpec.js +++ b/test/ngMock/angular-mocksSpec.js @@ -941,6 +941,29 @@ describe('ngMock', function() { }); + it('should match data object if specified', function() { + hb.when('GET', '/a/b', {a: 1, b: 2}).respond(201, 'content1'); + hb.when('GET', '/a/b').respond(202, 'content2'); + + hb('GET', '/a/b', '{"a":1,"b":2}', function(status, response) { + expect(status).toBe(201); + expect(response).toBe('content1'); + }); + + hb('GET', '/a/b', '{"b":2,"a":1}', function(status, response) { + expect(status).toBe(201); + expect(response).toBe('content1'); + }); + + hb('GET', '/a/b', null, function(status, response) { + expect(status).toBe(202); + expect(response).toBe('content2'); + }); + + hb.flush(); + }); + + it('should match only method', function() { hb.when('GET').respond(202, 'c'); callback.andCallFake(function(status, response) { @@ -1072,6 +1095,32 @@ describe('ngMock', function() { }); + it ('should not throw an exception when parsed body is equal to expected body object', function() { + hb.when('GET').respond(200, '', {}); + + hb.expect('GET', '/match', {a: 1, b: 2}); + expect(function() { + hb('GET', '/match', '{"a":1,"b":2}', noop, {}); + }).not.toThrow(); + + hb.expect('GET', '/match', {a: 1, b: 2}); + expect(function() { + hb('GET', '/match', '{"b":2,"a":1}', noop, {}); + }).not.toThrow(); + }); + + + it ('should throw exception when only parsed body differs from expected body object', function() { + hb.when('GET').respond(200, '', {}); + hb.expect('GET', '/match', {a: 1, b: 2}); + + expect(function() { + hb('GET', '/match', '{"a":1,"b":3}', noop, {}); + }).toThrow('Expected GET /match with different data\n' + + 'EXPECTED: {"a":1,"b":2}\nGOT: {"a":1,"b":3}'); + }); + + it("should use when's respond() when no expect() respond is defined", function() { callback.andCallFake(function(status, response) { expect(status).toBe(201); -- cgit v1.2.3