@@ -2143,6 +2143,41 @@ describe('handling rejections', function() {
2143
2143
}
2144
2144
) ;
2145
2145
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
+
2146
2181
describe ( 'requestInterceptor' , function ( ) {
2147
2182
var rejectReason = { 'lol' :'cat' } ;
2148
2183
var $q , $rootScope ;
0 commit comments