aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ngResource/resource.js11
-rw-r--r--test/ngResource/resourceSpec.js34
2 files changed, 41 insertions, 4 deletions
diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js
index 8f0ac543..a86c00ec 100644
--- a/src/ngResource/resource.js
+++ b/src/ngResource/resource.js
@@ -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
diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js
index c49ac9e0..2bf40a2c 100644
--- a/test/ngResource/resourceSpec.js
+++ b/test/ngResource/resourceSpec.js
@@ -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() {
});
-}); \ No newline at end of file
+});