UNPKG

keyv-nedb-core

Version:
75 lines (66 loc) 2.31 kB
import test from 'ava' import tk from 'timekeeper' import keyvTestSuite from '@keyv/test-suite' import Keyv from 'keyv' import KeyvNedbCore from 'this' const evictionTests = (test, Keyv, store) => { test.beforeEach(async () => { const keyv = new Keyv({ store: store() }) await keyv.clear() }) test.serial('.evictExpired() returns a Promise', t => { const keyv = new Keyv({ store: store() }) t.true(keyv.opts.store.evictExpired() instanceof Promise) }) test.serial('.evictExpired() evicts expired keys', async t => { const ttl = 500 const keyv = new Keyv({ store: store() }) await keyv.set('foo', 'bar', ttl) tk.freeze(Date.now() + ttl + 1) await keyv.opts.store.evictExpired() t.is(await keyv.opts.store.dbaccess.findOne({ key: 'foo' }), null) tk.reset() }) test.serial('.evictExpired() doesn\'t evicts fresh keys', async t => { const ttl = 500 const keyv = new Keyv({ store: store() }) await keyv.set('foo', 'bar', ttl) tk.freeze(Date.now() + ttl - 10) await keyv.opts.store.evictExpired() t.is(await keyv.get('foo'), 'bar') tk.reset() }) test.serial('automatic eviction evicts expired keys', async t => { const ttl = 500 const ops = 10 const keyv = new Keyv({ store: new KeyvNedbCore({ automaticEviction: ops }) }) for (let i = 0; i < (ops + 1); ++i) { await keyv.set('foo' + i, 'bar' + i, ttl) } tk.freeze(Date.now() + ttl + 1) for (let i = 0; i < (ops + 1); ++i) { t.is(await keyv.get('foo' + i), undefined) } tk.reset() }) test.serial('automatic eviction doesn\'t evict fresh keys', async t => { const ttl = 500 const ops = 10 const keyv = new Keyv({ store: new KeyvNedbCore({ automaticEviction: ops }) }) for (let i = 0; i < (ops + 1); ++i) { await keyv.set('foo' + i, 'bar' + i, ttl) } tk.freeze(Date.now() + ttl - 10) for (let i = 0; i < (ops + 1); ++i) { t.is(await keyv.get('foo' + i), 'bar' + i) } tk.reset() }) test.after.always(async () => { const keyv = new Keyv({ store: store() }) await keyv.clear() }) } const store = () => new KeyvNedbCore() keyvTestSuite(test, Keyv, store) evictionTests(test, Keyv, store)