diff --git a/spec/RedisCacheAdapter.spec.js b/spec/RedisCacheAdapter.spec.js new file mode 100644 index 0000000000..9e941eff49 --- /dev/null +++ b/spec/RedisCacheAdapter.spec.js @@ -0,0 +1,50 @@ +var RedisCacheAdapter = require('../src/Adapters/Cache/RedisCacheAdapter').default; + +describe('RedisCacheAdapter', function() { + var KEY = 'hello'; + var VALUE = 'world'; + + function wait(sleep) { + return new Promise(function(resolve) { + setTimeout(resolve, sleep); + }) + } + + it('should get/set/clear', (done) => { + var cache = new RedisCacheAdapter({ + ttl: NaN + }); + + cache.put(KEY, VALUE) + .then(() => cache.get(KEY)) + .then((value) => expect(value).toEqual(VALUE)) + .then(() => cache.clear()) + .then(() => cache.get(KEY)) + .then((value) => expect(value).toEqual(null)) + .then(done); + }); + + it('should expire after ttl', (done) => { + var cache = new RedisCacheAdapter(null, 1); + + cache.put(KEY, VALUE) + .then(() => cache.get(KEY)) + .then((value) => expect(value).toEqual(VALUE)) + .then(wait.bind(null, 2)) + .then(() => cache.get(KEY)) + .then((value) => expect(value).toEqual(null)) + .then(done); + }); + + it('should find un-expired records', (done) => { + var cache = new RedisCacheAdapter(null, 5); + + cache.put(KEY, VALUE) + .then(() => cache.get(KEY)) + .then((value) => expect(value).toEqual(VALUE)) + .then(wait.bind(null, 1)) + .then(() => cache.get(KEY)) + .then((value) => expect(value).not.toEqual(null)) + .then(done); + }); +}); diff --git a/src/Adapters/Cache/RedisCacheAdapter.js b/src/Adapters/Cache/RedisCacheAdapter.js index 5c1507f239..0347e97260 100644 --- a/src/Adapters/Cache/RedisCacheAdapter.js +++ b/src/Adapters/Cache/RedisCacheAdapter.js @@ -9,9 +9,10 @@ function debug() { export class RedisCacheAdapter { - constructor(ctx) { - this.client = redis.createClient(ctx); + constructor(redisCtx, ttl = DEFAULT_REDIS_TTL) { + this.client = redis.createClient(redisCtx); this.p = Promise.resolve(); + this.ttl = ttl; } get(key) { @@ -30,7 +31,7 @@ export class RedisCacheAdapter { return this.p; } - put(key, value, ttl = DEFAULT_REDIS_TTL) { + put(key, value, ttl = this.ttl) { value = JSON.stringify(value); debug('put', key, value, ttl); if (ttl === 0) {