diff options
| author | jankuca | 2013-08-29 18:52:30 -0700 | 
|---|---|---|
| committer | Igor Minar | 2013-09-02 11:48:14 +0200 | 
| commit | 2a3212a0a333ee4c0640c6b6d63d3c5c34a81c70 (patch) | |
| tree | d906d7a403345011951da2600b68872cc9b5b6ce | |
| parent | 7a08a76875b5f1f86b129b4f253cd74a75e2658a (diff) | |
| download | angular.js-2a3212a0a333ee4c0640c6b6d63d3c5c34a81c70.tar.bz2 | |
fix($http): allow empty responses to be cached
Closes #3809
| -rw-r--r-- | src/ng/http.js | 4 | ||||
| -rw-r--r-- | test/ng/httpSpec.js | 14 | 
2 files changed, 16 insertions, 2 deletions
| diff --git a/src/ng/http.js b/src/ng/http.js index 40ebfca2..85068ff6 100644 --- a/src/ng/http.js +++ b/src/ng/http.js @@ -706,7 +706,7 @@ function $HttpProvider() {        if (cache) {          cachedResp = cache.get(url); -        if (cachedResp) { +        if (isDefined(cachedResp)) {            if (cachedResp.then) {              // cached request has already been sent, but there is no response yet              cachedResp.then(removePendingReq, removePendingReq); @@ -726,7 +726,7 @@ function $HttpProvider() {        }        // if we won't have the response in cache, send the request to the backend -      if (!cachedResp) { +      if (isUndefined(cachedResp)) {          $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout,              config.withCredentials);        } diff --git a/test/ng/httpSpec.js b/test/ng/httpSpec.js index 18be5826..7f49ca8c 100644 --- a/test/ng/httpSpec.js +++ b/test/ng/httpSpec.js @@ -896,6 +896,20 @@ describe('$http', function() {        }); +      it('should allow the cached value to be an empty string', function () { +        cache.put('/abc', ''); + +        callback.andCallFake(function (response, status, headers) { +          expect(response).toBe(''); +          expect(status).toBe(200); +        }); + +        $http({method: 'GET', url: '/abc', cache: cache}).success(callback); +        $rootScope.$digest(); +        expect(callback).toHaveBeenCalled(); +      }); + +        it('should default to status code 200 and empty headers if cache contains a non-array element',            inject(function($rootScope) {              cache.put('/myurl', 'simple response'); | 
