From 7d8f088a83e3b60f4af99b508c21a24c5be8c11b Mon Sep 17 00:00:00 2001 From: Luke Childs Date: Tue, 25 Jul 2017 16:36:08 +0100 Subject: [PATCH] Split tests up into seperate files Allow tests to be imported seperately or use helper to run them all --- packages/keyv-test-suite/src/api.js | 99 ++++++++++++++++ packages/keyv-test-suite/src/index.js | 151 ++----------------------- packages/keyv-test-suite/src/values.js | 58 ++++++++++ 3 files changed, 167 insertions(+), 141 deletions(-) create mode 100644 packages/keyv-test-suite/src/api.js create mode 100644 packages/keyv-test-suite/src/values.js diff --git a/packages/keyv-test-suite/src/api.js b/packages/keyv-test-suite/src/api.js new file mode 100644 index 0000000..7dca257 --- /dev/null +++ b/packages/keyv-test-suite/src/api.js @@ -0,0 +1,99 @@ +import delay from 'delay'; + +const keyvApiTests = (test, Keyv, store) => { + test.beforeEach(async () => { + const keyv = new Keyv({ store }); + await keyv.clear(); + }); + + test.serial('.set(key, value) returns a Promise', t => { + const keyv = new Keyv({ store }); + t.true(keyv.set('foo', 'bar') instanceof Promise); + }); + + test.serial('.set(key, value) resolves to true', async t => { + const keyv = new Keyv({ store }); + t.is(await keyv.set('foo', 'bar'), true); + }); + + test.serial('.set(key, value) sets a value', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', 'bar'); + t.is(await keyv.get('foo'), 'bar'); + }); + + test.serial('.set(key, value, ttl) sets a value that expires', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', 'bar', 100); + t.is(await keyv.get('foo'), 'bar'); + await delay(110); + t.is(await keyv.get('foo'), undefined); + }); + + test.serial('.get(key) returns a Promise', t => { + const keyv = new Keyv({ store }); + t.true(keyv.get('foo') instanceof Promise); + }); + + test.serial('.get(key) resolves to value', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', 'bar'); + t.is(await keyv.get('foo'), 'bar'); + }); + + test.serial('.get(key) with nonexistent key resolves to undefined', async t => { + const keyv = new Keyv({ store }); + t.is(await keyv.get('foo'), undefined); + }); + + test.serial('.delete(key) returns a Promise', t => { + const keyv = new Keyv({ store }); + t.true(keyv.delete('foo') instanceof Promise); + }); + + test.serial('.delete(key) resolves to true', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', 'bar'); + t.is(await keyv.delete('foo'), true); + }); + + test.serial('.delete(key) with nonexistent key resolves to false', async t => { + const keyv = new Keyv({ store }); + t.is(await keyv.delete('foo'), false); + }); + + test.serial('.delete(key) deletes a key', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', 'bar'); + t.is(await keyv.delete('foo'), true); + t.is(await keyv.get('foo'), undefined); + }); + + test.serial('.clear() returns a Promise', t => { + const keyv = new Keyv({ store }); + t.true(keyv.clear() instanceof Promise); + }); + + test.serial('.clear() resolves to undefiend', async t => { + const keyv = new Keyv({ store }); + t.is(await keyv.clear(), undefined); + await keyv.set('foo', 'bar'); + t.is(await keyv.clear(), undefined); + }); + + test.serial('.clear() deletes all key/value pairs', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', 'bar'); + await keyv.set('fizz', 'buzz'); + await keyv.clear(); + t.is(await keyv.get('foo'), undefined); + t.is(await keyv.get('fizz'), undefined); + }); + + test.after.always(async () => { + const keyv = new Keyv({ store }); + await keyv.clear(); + }); +}; + +export default keyvApiTests; diff --git a/packages/keyv-test-suite/src/index.js b/packages/keyv-test-suite/src/index.js index e0cbf8a..30b64fb 100644 --- a/packages/keyv-test-suite/src/index.js +++ b/packages/keyv-test-suite/src/index.js @@ -1,144 +1,13 @@ -import delay from 'delay'; +import keyvApiTests from './api'; +import keyvValueTests from './values'; -const keyvApiTests = (test, Keyv, store) => { - test.beforeEach(async () => { - const keyv = new Keyv({ store }); - await keyv.clear(); - }); - - test.serial('.set(key, value) returns a Promise', t => { - const keyv = new Keyv({ store }); - t.true(keyv.set('foo', 'bar') instanceof Promise); - }); - - test.serial('.set(key, value) resolves to true', async t => { - const keyv = new Keyv({ store }); - t.is(await keyv.set('foo', 'bar'), true); - }); - - test.serial('.set(key, value) sets a value', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', 'bar'); - t.is(await keyv.get('foo'), 'bar'); - }); - - test.serial('.set(key, value, ttl) sets a value that expires', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', 'bar', 100); - t.is(await keyv.get('foo'), 'bar'); - await delay(110); - t.is(await keyv.get('foo'), undefined); - }); - - test.serial('.get(key) returns a Promise', t => { - const keyv = new Keyv({ store }); - t.true(keyv.get('foo') instanceof Promise); - }); - - test.serial('.get(key) resolves to value', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', 'bar'); - t.is(await keyv.get('foo'), 'bar'); - }); - - test.serial('.get(key) with nonexistent key resolves to undefined', async t => { - const keyv = new Keyv({ store }); - t.is(await keyv.get('foo'), undefined); - }); - - test.serial('.delete(key) returns a Promise', t => { - const keyv = new Keyv({ store }); - t.true(keyv.delete('foo') instanceof Promise); - }); - - test.serial('.delete(key) resolves to true', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', 'bar'); - t.is(await keyv.delete('foo'), true); - }); - - test.serial('.delete(key) with nonexistent key resolves to false', async t => { - const keyv = new Keyv({ store }); - t.is(await keyv.delete('foo'), false); - }); - - test.serial('.delete(key) deletes a key', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', 'bar'); - t.is(await keyv.delete('foo'), true); - t.is(await keyv.get('foo'), undefined); - }); - - test.serial('.clear() returns a Promise', t => { - const keyv = new Keyv({ store }); - t.true(keyv.clear() instanceof Promise); - }); - - test.serial('.clear() resolves to undefiend', async t => { - const keyv = new Keyv({ store }); - t.is(await keyv.clear(), undefined); - await keyv.set('foo', 'bar'); - t.is(await keyv.clear(), undefined); - }); - - test.serial('.clear() deletes all key/value pairs', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', 'bar'); - await keyv.set('fizz', 'buzz'); - await keyv.clear(); - t.is(await keyv.get('foo'), undefined); - t.is(await keyv.get('fizz'), undefined); - }); - - test.serial('value can be false', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', false); - t.is(await keyv.get('foo'), false); - }); - - test.serial('value can be null', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', null); - t.is(await keyv.get('foo'), null); - }); - - test.serial('value can be undefined', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', undefined); - t.is(await keyv.get('foo'), undefined); - }); - - test.serial('value can be a number', async t => { - const keyv = new Keyv({ store }); - await keyv.set('foo', 0); - t.is(await keyv.get('foo'), 0); - }); - - test.serial('value can be an object', async t => { - const keyv = new Keyv({ store }); - const value = { fizz: 'buzz' }; - await keyv.set('foo', value); - t.deepEqual(await keyv.get('foo'), value); - }); - - test.serial('value can be a buffer', async t => { - const keyv = new Keyv({ store }); - const buf = Buffer.from('bar'); - await keyv.set('foo', buf); - t.true(buf.equals(await keyv.get('foo'))); - }); - - test.serial('value can be an object containing a buffer', async t => { - const keyv = new Keyv({ store }); - const value = { buff: Buffer.from('buzz') }; - await keyv.set('foo', value); - t.deepEqual(await keyv.get('foo'), value); - }); - - test.after.always(async () => { - const keyv = new Keyv({ store }); - await keyv.clear(); - }); +const keyvTestSuite = (test, Keyv, store) => { + keyvApiTests(test, Keyv, store); + keyvValueTests(test, Keyv, store); }; -export default keyvApiTests; +export { + keyvApiTests, + keyvValueTests +}; +export default keyvTestSuite; diff --git a/packages/keyv-test-suite/src/values.js b/packages/keyv-test-suite/src/values.js new file mode 100644 index 0000000..2ef3fa9 --- /dev/null +++ b/packages/keyv-test-suite/src/values.js @@ -0,0 +1,58 @@ +const keyvValueTests = (test, Keyv, store) => { + test.beforeEach(async () => { + const keyv = new Keyv({ store }); + await keyv.clear(); + }); + + test.serial('value can be false', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', false); + t.is(await keyv.get('foo'), false); + }); + + test.serial('value can be null', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', null); + t.is(await keyv.get('foo'), null); + }); + + test.serial('value can be undefined', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', undefined); + t.is(await keyv.get('foo'), undefined); + }); + + test.serial('value can be a number', async t => { + const keyv = new Keyv({ store }); + await keyv.set('foo', 0); + t.is(await keyv.get('foo'), 0); + }); + + test.serial('value can be an object', async t => { + const keyv = new Keyv({ store }); + const value = { fizz: 'buzz' }; + await keyv.set('foo', value); + t.deepEqual(await keyv.get('foo'), value); + }); + + test.serial('value can be a buffer', async t => { + const keyv = new Keyv({ store }); + const buf = Buffer.from('bar'); + await keyv.set('foo', buf); + t.true(buf.equals(await keyv.get('foo'))); + }); + + test.serial('value can be an object containing a buffer', async t => { + const keyv = new Keyv({ store }); + const value = { buff: Buffer.from('buzz') }; + await keyv.set('foo', value); + t.deepEqual(await keyv.get('foo'), value); + }); + + test.after.always(async () => { + const keyv = new Keyv({ store }); + await keyv.clear(); + }); +}; + +export default keyvValueTests;