diff options
| -rw-r--r-- | src/ngResource/resource.js | 11 | ||||
| -rw-r--r-- | test/ngResource/resourceSpec.js | 34 | 
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 +}); | 
