Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 7b23ce5

Browse files
committed
fixup! fix($resource): fix interceptors and success/error callbacks
1 parent 743c4e4 commit 7b23ce5

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

test/ngResource/resourceSpec.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2143,6 +2143,41 @@ describe('handling rejections', function() {
21432143
}
21442144
);
21452145

2146+
2147+
it('should not propagate exceptions in success callback to the returned promise', function() {
2148+
var successCallbackSpy = jasmine.createSpy('successCallback').and.throwError('error');
2149+
var promiseResolveSpy = jasmine.createSpy('promiseResolve');
2150+
var promiseRejectSpy = jasmine.createSpy('promiseReject');
2151+
2152+
$httpBackend.expectGET('/CreditCard/123').respond(null);
2153+
var CreditCard = $resource('/CreditCard/:id');
2154+
CreditCard.get({id: 123}, successCallbackSpy).
2155+
$promise.then(promiseResolveSpy, promiseRejectSpy);
2156+
2157+
$httpBackend.flush();
2158+
expect(successCallbackSpy).toHaveBeenCalled();
2159+
expect(promiseResolveSpy).toHaveBeenCalledWith(jasmine.any(CreditCard));
2160+
expect(promiseRejectSpy).not.toHaveBeenCalled();
2161+
});
2162+
2163+
2164+
it('should not be able to recover from inside the error callback', function() {
2165+
var errorCallbackSpy = jasmine.createSpy('errorCallback').and.returnValue({id: 123});
2166+
var promiseResolveSpy = jasmine.createSpy('promiseResolve');
2167+
var promiseRejectSpy = jasmine.createSpy('promiseReject');
2168+
2169+
$httpBackend.expectGET('/CreditCard/123').respond(404);
2170+
var CreditCard = $resource('/CreditCard/:id');
2171+
CreditCard.get({id: 123}, noop, errorCallbackSpy).
2172+
$promise.then(promiseResolveSpy, promiseRejectSpy);
2173+
2174+
$httpBackend.flush();
2175+
expect(errorCallbackSpy).toHaveBeenCalled();
2176+
expect(promiseResolveSpy).not.toHaveBeenCalled();
2177+
expect(promiseRejectSpy).toHaveBeenCalledWith(jasmine.objectContaining({status: 404}));
2178+
});
2179+
2180+
21462181
describe('requestInterceptor', function() {
21472182
var rejectReason = {'lol':'cat'};
21482183
var $q, $rootScope;

0 commit comments

Comments
 (0)