mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
fix($resource): pass transformed value to both callbacks and promises
Closes #3817
This commit is contained in:
parent
5b8c78843e
commit
e36e28ebd4
2 changed files with 41 additions and 4 deletions
|
|
@ -492,8 +492,6 @@ angular.module('ngResource', ['ng']).
|
|||
|
||||
value.$resolved = true;
|
||||
|
||||
(success||noop)(value, response.headers);
|
||||
|
||||
response.resource = value;
|
||||
|
||||
return response;
|
||||
|
|
@ -503,8 +501,15 @@ angular.module('ngResource', ['ng']).
|
|||
(error||noop)(response);
|
||||
|
||||
return $q.reject(response);
|
||||
}).then(responseInterceptor, responseErrorInterceptor);
|
||||
});
|
||||
|
||||
promise = promise.then(
|
||||
function(response) {
|
||||
var value = responseInterceptor(response);
|
||||
(success||noop)(value, response.headers);
|
||||
return value;
|
||||
},
|
||||
responseErrorInterceptor);
|
||||
|
||||
if (!isInstanceCall) {
|
||||
// we are creating instance / collection
|
||||
|
|
|
|||
|
|
@ -630,6 +630,38 @@ describe("resource", function() {
|
|||
|
||||
expect(cc.url).toBe('/new-id');
|
||||
});
|
||||
|
||||
it('should pass the same transformed value to success callbacks and to promises', function() {
|
||||
$httpBackend.expect('GET', '/CreditCard').respond(200, { value: 'original' });
|
||||
|
||||
var transformResponse = function (response) {
|
||||
return { value: 'transformed' };
|
||||
};
|
||||
|
||||
var CreditCard = $resource('/CreditCard', {}, {
|
||||
call: {
|
||||
method: 'get',
|
||||
interceptor: { response: transformResponse }
|
||||
}
|
||||
});
|
||||
|
||||
var successValue,
|
||||
promiseValue;
|
||||
|
||||
var cc = new CreditCard({ name: 'Me' });
|
||||
|
||||
var req = cc.$call({}, function (result) {
|
||||
successValue = result;
|
||||
});
|
||||
req.then(function (result) {
|
||||
promiseValue = result;
|
||||
});
|
||||
|
||||
$httpBackend.flush();
|
||||
expect(successValue).toEqual({ value: 'transformed' });
|
||||
expect(promiseValue).toEqual({ value: 'transformed' });
|
||||
expect(successValue).toBe(promiseValue);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -1084,4 +1116,4 @@ describe('resource', function() {
|
|||
});
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue