diff --git a/lib/http-cache/storage.js b/lib/http-cache/storage.js index e7487bc..cc5cceb 100644 --- a/lib/http-cache/storage.js +++ b/lib/http-cache/storage.js @@ -59,13 +59,14 @@ Storage.prototype.handleRequest = function(req, res) { var evaluator = new context.RequestEvaluationContext(req); this.emit('request', req, res, evaluator); - if (!!evaluator.cacheable) { + if (!!evaluator.retrievable) { if (this.serveCached(req, res)) { return true; - } else { - this.prepareWrappers(req, res); } } + if (!!evaluator.storable) { + this.prepareWrappers(req, res); + } return false; }; diff --git a/test/http-cache/storage/memory-test.js b/test/http-cache/storage/memory-test.js index 9594711..dcdc8b6 100644 --- a/test/http-cache/storage/memory-test.js +++ b/test/http-cache/storage/memory-test.js @@ -8,6 +8,7 @@ var helper = require('../../test-helper') , shared = require('../../support/shared-examples') , httpCache = helper.httpCache + , assert = require('assert') , memo = helper.memo ; @@ -17,4 +18,24 @@ describe('httpCache.storage.MemoryStorage', function(){ }); shared.behavesLikeACacheStorage(storage); + + var method = memo().is(function(){ return 'GET' }); + var headers = memo().is(function(){ return {} }); + + var req = memo().is(function(){ + return helper.createRequest({ + method: method(), + headers: headers() + }); + }); + + var res = memo().is(function(){ + return helper.createResponse(req()); + }); + + it('tries to serve cache if cacheable', function(){ + var serveCachedSpy = helper.sinon.spy(storage(), 'serveCached'); + storage().handleRequest(req(), res()); + assert(serveCachedSpy.called); + }); });