From b183eae7aed82535203cbd444c36312cf91938bc Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Wed, 25 Nov 2015 17:51:32 +0000 Subject: [PATCH] fix($resource): don't add noop $cancelRequest after request has resolved --- src/ngResource/resource.js | 2 +- test/ngResource/resourceSpec.js | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index b8c217c8c261..cc72f77a58dd 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -706,7 +706,7 @@ angular.module('ngResource', ['ng']). promise.finally(function() { value.$resolved = true; - if (cancellable) { + if (!isInstanceCall && cancellable) { value.$cancelRequest = angular.noop; timeoutDeferred = httpConfig.timeout = null; } diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index d746bfbcc952..d430e9640744 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -1428,6 +1428,8 @@ describe('cancelling requests', function() { ); it('should not create a `$cancelRequest` method for instance calls', function() { + $httpBackend.whenPOST('/CreditCard').respond({}); + var CreditCard = $resource('/CreditCard', {}, { save1: { method: 'POST', @@ -1448,6 +1450,11 @@ describe('cancelling requests', function() { var promise2 = creditCard.$save2(); expect(promise2.$cancelRequest).toBeUndefined(); expect(creditCard.$cancelRequest).toBeUndefined(); + + $httpBackend.flush(); + expect(promise1.$cancelRequest).toBeUndefined(); + expect(promise2.$cancelRequest).toBeUndefined(); + expect(creditCard.$cancelRequest).toBeUndefined(); }); it('should not create a `$cancelRequest` method for non-cancellable calls', function() { @@ -1546,7 +1553,7 @@ describe('cancelling requests', function() { }); }); -describe('resource wrt configuring `cancellable` on the provider', function() { +describe('configuring `cancellable` on the provider', function() { var $resource; beforeEach(module('ngResource', function($resourceProvider) {