diff options
| author | Igor Minar | 2011-12-01 16:20:08 -0500 | 
|---|---|---|
| committer | Igor Minar | 2011-12-01 16:20:08 -0500 | 
| commit | 44b2f44f93afe226196cb11acb03eb2fa2de04c1 (patch) | |
| tree | 97f65bef1b6fc66ffc7d5122ee3920e84b6f039f | |
| parent | 1d14760c6d3eefb676f5670bc323b2a7cadcdbfa (diff) | |
| download | angular.js-44b2f44f93afe226196cb11acb03eb2fa2de04c1.tar.bz2 | |
fix($resource): forwardport exposing headers from 0.9.19
| -rw-r--r-- | src/Resource.js | 13 | ||||
| -rw-r--r-- | src/service/resource.js | 10 | ||||
| -rw-r--r-- | test/ResourceSpec.js | 24 | 
3 files changed, 30 insertions, 17 deletions
| diff --git a/src/Resource.js b/src/Resource.js index f4440e00..3b4a6db1 100644 --- a/src/Resource.js +++ b/src/Resource.js @@ -107,23 +107,24 @@ ResourceFactory.prototype = {          }          var value = this instanceof Resource ? this : (action.isArray ? [] : new Resource(data)); -        var future = self.$http({ +        self.$http({            method: action.method,            url: route.url(extend({}, extractParams(data), action.params || {}, params)),            data: data          }).then(function(response) { -            response = response.data; -            if (response) { +            var data = response.data; + +            if (data) {                if (action.isArray) {                  value.length = 0; -                forEach(response, function(item) { +                forEach(data, function(item) {                    value.push(new Resource(item));                  });                } else { -                copy(response, value); +                copy(data, value);                }              } -            (success||noop)(value); +            (success||noop)(value, response.headers);            }, error);          return value; diff --git a/src/service/resource.js b/src/service/resource.js index 8fe27f1b..bee5af47 100644 --- a/src/service/resource.js +++ b/src/service/resource.js @@ -141,13 +141,17 @@     </pre>   *   *     It's worth noting that the success callback for `get`, `query` and other method gets passed - *     in the response that came from the server, so one could rewrite the above example as: + *     in the response that came from the server as well as $http header getter function, so one + *     could rewrite the above example and get access to http headers as:   *     <pre>       var User = $resource('/user/:userId', {userId:'@id'}); -     User.get({userId:123}, function(u){ +     User.get({userId:123}, function(u, getResponseHeaders){         u.abc = true; -       u.$save(); +       u.$save(function(u, putResponseHeaders) { +         //u => saved user object +         //putResponseHeaders => $http header getter +       });       });     </pre> diff --git a/test/ResourceSpec.js b/test/ResourceSpec.js index 6045bd30..7ee7aec8 100644 --- a/test/ResourceSpec.js +++ b/test/ResourceSpec.js @@ -107,7 +107,9 @@ describe("resource", function() {      $httpBackend.flush();      nakedExpect(cc).toEqual({id: 123, name: 'misko'}); -    expect(callback).toHaveBeenCalledWith(cc); +    expect(callback).toHaveBeenCalledOnce(); +    expect(callback.mostRecentCall.args[0]).toEqual(cc); +    expect(callback.mostRecentCall.args[1]()).toEqual({});    }));    it("should read resource", inject(function($httpBackend) { @@ -120,7 +122,8 @@ describe("resource", function() {      $httpBackend.flush();      nakedExpect(cc).toEqual({id: 123, number: '9876'}); -    expect(callback).toHaveBeenCalledWith(cc); +    expect(callback.mostRecentCall.args[0]).toEqual(cc); +    expect(callback.mostRecentCall.args[1]()).toEqual({});    }));    it("should read partial resource", inject(function($httpBackend) { @@ -137,7 +140,8 @@ describe("resource", function() {      $httpBackend.expect('GET', '/CreditCard/123').respond({id: {key: 123}, number: '9876'});      cc.$get(callback);      $httpBackend.flush(); -    expect(callback).toHaveBeenCalledWith(cc); +    expect(callback.mostRecentCall.args[0]).toEqual(cc); +    expect(callback.mostRecentCall.args[1]()).toEqual({});      expect(cc.number).toEqual('9876');    })); @@ -160,7 +164,8 @@ describe("resource", function() {      $httpBackend.flush();      nakedExpect(ccs).toEqual([{id:1}, {id:2}]); -    expect(callback).toHaveBeenCalledWith(ccs); +    expect(callback.mostRecentCall.args[0]).toEqual(ccs); +    expect(callback.mostRecentCall.args[1]()).toEqual({});    }));    it("should have all arguments optional", inject(function($httpBackend) { @@ -180,7 +185,8 @@ describe("resource", function() {      expect(callback).not.toHaveBeenCalled();      $httpBackend.flush(); -    nakedExpect(callback.mostRecentCall.args).toEqual([{}]); +    nakedExpect(callback.mostRecentCall.args[0]).toEqual({}); +    expect(callback.mostRecentCall.args[1]()).toEqual({});      callback.reset();      $httpBackend.expect('DELETE', '/CreditCard/333').respond(204, null); @@ -188,7 +194,8 @@ describe("resource", function() {      expect(callback).not.toHaveBeenCalled();      $httpBackend.flush(); -    nakedExpect(callback.mostRecentCall.args).toEqual([{}]); +    nakedExpect(callback.mostRecentCall.args[0]).toEqual({}); +    expect(callback.mostRecentCall.args[1]()).toEqual({});    }));    it('should post charge verb', inject(function($httpBackend) { @@ -205,7 +212,7 @@ describe("resource", function() {    }));    it('should create on save', inject(function($httpBackend) { -    $httpBackend.expect('POST', '/CreditCard', '{"name":"misko"}').respond({id: 123}); +    $httpBackend.expect('POST', '/CreditCard', '{"name":"misko"}').respond({id: 123}, {header1: 'a'});      var cc = new CreditCard();      expect(cc.$get).toBeDefined(); @@ -219,7 +226,8 @@ describe("resource", function() {      $httpBackend.flush();      nakedExpect(cc).toEqual({id:123}); -    expect(callback).toHaveBeenCalledWith(cc); +    expect(callback.mostRecentCall.args[0]).toEqual(cc); +    expect(callback.mostRecentCall.args[1]()).toEqual({header1: 'a'});    }));    it('should not mutate the resource object if response contains no body', inject(function($httpBackend) { | 
