From 8537708e0458627cc10eaacc714698a99d0c15e9 Mon Sep 17 00:00:00 2001 From: Sekib Omazic Date: Fri, 29 Aug 2014 19:49:28 +0200 Subject: [PATCH] fix($resource): provide HTTP status to the success provide status code to the success callback fixes #8341 --- src/ngResource/resource.js | 6 +++--- test/ngResource/resourceSpec.js | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index dbf10a33abe5..a44058fbaad7 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -202,8 +202,8 @@ function shallowClearAndCopy(src, dst) { * - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])` * - non-GET instance actions: `instance.$action([parameters], [success], [error])` * - * Success callback is called with (value, responseHeaders) arguments. Error callback is called - * with (httpResponse) argument. + * Success callback is called with (value, responseHeaders, status) arguments. Error callback is + * called with (httpResponse) argument. * * Class actions return empty instance (with additional properties below). * Instance actions return promise of the action. @@ -613,7 +613,7 @@ angular.module('ngResource', ['ng']). promise = promise.then( function (response) { var value = responseInterceptor(response); - (success || noop)(value, response.headers); + (success || noop)(value, response.headers, response.status); return value; }, responseErrorInterceptor); diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index 6e58976355bd..79109c257a39 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -811,6 +811,21 @@ describe("resource", function() { }); + it ('should provide http status code for success callback', function() { + $httpBackend.expect('GET', '/CreditCard/123').respond(202, {id: 123, number: '9876'}); + + var statusCode; + var cc = CreditCard.get({id: 123}, function(data, headers, status) { + statusCode = status; + }); + + $httpBackend.flush(); + + expect(cc).toEqualData({id: 123, number: '9876'}); + expect(statusCode).toBe(202); + }); + + it('should allow parsing a value from headers', function() { // https://github.com/angular/angular.js/pull/2607#issuecomment-17759933 $httpBackend.expect('POST', '/CreditCard').respond(201, '', {'Location': '/new-id'});