From fe62e92aa1723d8d1a920ecd957061e3bc38ea10 Mon Sep 17 00:00:00 2001 From: Yuki Takeichi Date: Wed, 7 Sep 2016 21:08:09 +0900 Subject: [PATCH] Add NullCacheAdapter (#2636) * Add NullCacheAdapter * clear returns promise explicitly * Add NullCacheAdapter accessor --- spec/NullCacheAdapter.spec.js | 37 ++++++++++++++++++++++++++ spec/index.spec.js | 1 + src/Adapters/Cache/NullCacheAdapter.js | 25 +++++++++++++++++ src/index.js | 3 ++- 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 spec/NullCacheAdapter.spec.js create mode 100644 src/Adapters/Cache/NullCacheAdapter.js diff --git a/spec/NullCacheAdapter.spec.js b/spec/NullCacheAdapter.spec.js new file mode 100644 index 00000000..a1943559 --- /dev/null +++ b/spec/NullCacheAdapter.spec.js @@ -0,0 +1,37 @@ +var NullCacheAdapter = require('../src/Adapters/Cache/NullCacheAdapter').default; + +describe('NullCacheAdapter', function() { + var KEY = 'hello'; + var VALUE = 'world'; + + it('should expose promisifyed methods', (done) => { + var cache = new NullCacheAdapter({ + ttl: NaN + }); + + // Verify all methods return promises. + Promise.all([ + cache.put(KEY, VALUE), + cache.del(KEY), + cache.get(KEY), + cache.clear() + ]).then(() => { + done(); + }); + }); + + it('should get/set/clear', (done) => { + var cache = new NullCacheAdapter({ + ttl: NaN + }); + + cache.put(KEY, VALUE) + .then(() => cache.get(KEY)) + .then((value) => expect(value).toEqual(null)) + .then(() => cache.clear()) + .then(() => cache.get(KEY)) + .then((value) => expect(value).toEqual(null)) + .then(done); + }); + +}); diff --git a/spec/index.spec.js b/spec/index.spec.js index 3987a0da..7f30388f 100644 --- a/spec/index.spec.js +++ b/spec/index.spec.js @@ -248,6 +248,7 @@ describe('server', () => { expect(ParseServer.GCSAdapter).toThrow('GCSAdapter is not provided by parse-server anymore; please install parse-server-gcs-adapter'); expect(ParseServer.FileSystemAdapter).toThrow(); expect(ParseServer.InMemoryCacheAdapter).toThrow(); + expect(ParseServer.NullCacheAdapter).toThrow(); done(); }); diff --git a/src/Adapters/Cache/NullCacheAdapter.js b/src/Adapters/Cache/NullCacheAdapter.js new file mode 100644 index 00000000..430f7c36 --- /dev/null +++ b/src/Adapters/Cache/NullCacheAdapter.js @@ -0,0 +1,25 @@ +export class NullCacheAdapter { + + constructor(ctx) { + } + + get(key) { + return new Promise((resolve, _) => { + return resolve(null); + }) + } + + put(key, value, ttl) { + return Promise.resolve(); + } + + del(key) { + return Promise.resolve(); + } + + clear() { + return Promise.resolve(); + } +} + +export default NullCacheAdapter; diff --git a/src/index.js b/src/index.js index 8f3e0e2d..39d2e95f 100644 --- a/src/index.js +++ b/src/index.js @@ -2,6 +2,7 @@ import ParseServer from './ParseServer'; import S3Adapter from 'parse-server-s3-adapter' import FileSystemAdapter from 'parse-server-fs-adapter' import InMemoryCacheAdapter from './Adapters/Cache/InMemoryCacheAdapter' +import NullCacheAdapter from './Adapters/Cache/NullCacheAdapter' import TestUtils from './TestUtils'; import { useExternal } from './deprecated'; import { getLogger } from './logger'; @@ -21,4 +22,4 @@ Object.defineProperty(module.exports, 'logger', { }); export default ParseServer; -export { S3Adapter, GCSAdapter, FileSystemAdapter, InMemoryCacheAdapter, TestUtils, _ParseServer as ParseServer }; +export { S3Adapter, GCSAdapter, FileSystemAdapter, InMemoryCacheAdapter, NullCacheAdapter, TestUtils, _ParseServer as ParseServer };