Browse Source

Use new store instace for each test

emp
Luke Childs 7 years ago
committed by Jytesh
parent
commit
bfb4d0cf62
  1. 32
      packages/keyv-test-suite/src/api.js
  2. 20
      packages/keyv-test-suite/src/namespace.js
  3. 18
      packages/keyv-test-suite/src/values.js
  4. 2
      packages/keyv-test-suite/test/unit.js

32
packages/keyv-test-suite/src/api.js

@ -2,28 +2,28 @@ import delay from 'delay';
const keyvApiTests = (test, Keyv, store) => {
test.beforeEach(async () => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: store() });
await keyv.clear();
});
test.serial('.set(key, value) returns a Promise', t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: store() });
t.true(keyv.set('foo', 'bar') instanceof Promise);
});
test.serial('.set(key, value) resolves to true', async t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: store() });
t.is(await keyv.set('foo', 'bar'), true);
});
test.serial('.set(key, value) sets a value', async t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: 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 });
const keyv = new Keyv({ store: store() });
await keyv.set('foo', 'bar', 100);
t.is(await keyv.get('foo'), 'bar');
await delay(110);
@ -31,58 +31,58 @@ const keyvApiTests = (test, Keyv, store) => {
});
test.serial('.get(key) returns a Promise', t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: store() });
t.true(keyv.get('foo') instanceof Promise);
});
test.serial('.get(key) resolves to value', async t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: 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 });
const keyv = new Keyv({ store: store() });
t.is(await keyv.get('foo'), undefined);
});
test.serial('.delete(key) returns a Promise', t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: store() });
t.true(keyv.delete('foo') instanceof Promise);
});
test.serial('.delete(key) resolves to true', async t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: 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 });
const keyv = new Keyv({ store: store() });
t.is(await keyv.delete('foo'), false);
});
test.serial('.delete(key) deletes a key', async t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: 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 });
const keyv = new Keyv({ store: store() });
t.true(keyv.clear() instanceof Promise);
});
test.serial('.clear() resolves to undefiend', async t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: 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 });
const keyv = new Keyv({ store: store() });
await keyv.set('foo', 'bar');
await keyv.set('fizz', 'buzz');
await keyv.clear();
@ -91,7 +91,7 @@ const keyvApiTests = (test, Keyv, store) => {
});
test.after.always(async () => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: store() });
await keyv.clear();
});
};

20
packages/keyv-test-suite/src/namespace.js

@ -1,14 +1,14 @@
const keyvNamepsaceTests = (test, Keyv, store) => {
test.beforeEach(async () => {
const keyv1 = new Keyv({ store, namespace: 'keyv1' });
const keyv2 = new Keyv({ store, namespace: 'keyv2' });
const keyv1 = new Keyv({ store: store(), namespace: 'keyv1' });
const keyv2 = new Keyv({ store: store(), namespace: 'keyv2' });
await keyv1.clear();
await keyv2.clear();
});
test.serial('namespaced set/get don\'t collide', async t => {
const keyv1 = new Keyv({ store, namespace: 'keyv1' });
const keyv2 = new Keyv({ store, namespace: 'keyv2' });
const keyv1 = new Keyv({ store: store(), namespace: 'keyv1' });
const keyv2 = new Keyv({ store: store(), namespace: 'keyv2' });
await keyv1.set('foo', 'keyv1');
await keyv2.set('foo', 'keyv2');
t.is(await keyv1.get('foo'), 'keyv1');
@ -16,8 +16,8 @@ const keyvNamepsaceTests = (test, Keyv, store) => {
});
test.serial('namespaced delete only deletes from current namespace', async t => {
const keyv1 = new Keyv({ store, namespace: 'keyv1' });
const keyv2 = new Keyv({ store, namespace: 'keyv2' });
const keyv1 = new Keyv({ store: store(), namespace: 'keyv1' });
const keyv2 = new Keyv({ store: store(), namespace: 'keyv2' });
await keyv1.set('foo', 'keyv1');
await keyv2.set('foo', 'keyv2');
t.is(await keyv1.delete('foo'), true);
@ -26,8 +26,8 @@ const keyvNamepsaceTests = (test, Keyv, store) => {
});
test.serial('namespaced clear only clears current namespace', async t => {
const keyv1 = (store instanceof Map) ? new Keyv({ namespace: 'keyv1' }) : new Keyv({ store, namespace: 'keyv1' });
const keyv2 = (store instanceof Map) ? new Keyv({ namespace: 'keyv2' }) : new Keyv({ store, namespace: 'keyv2' });
const keyv1 = new Keyv({ store: store(), namespace: 'keyv1' });
const keyv2 = new Keyv({ store: store(), namespace: 'keyv2' });
await keyv1.set('foo', 'keyv1');
await keyv1.set('bar', 'keyv1');
await keyv2.set('foo', 'keyv2');
@ -40,8 +40,8 @@ const keyvNamepsaceTests = (test, Keyv, store) => {
});
test.after.always(async () => {
const keyv1 = new Keyv({ store, namespace: 'keyv1' });
const keyv2 = new Keyv({ store, namespace: 'keyv2' });
const keyv1 = new Keyv({ store: store(), namespace: 'keyv1' });
const keyv2 = new Keyv({ store: store(), namespace: 'keyv2' });
await keyv1.clear();
await keyv2.clear();
});

18
packages/keyv-test-suite/src/values.js

@ -1,56 +1,56 @@
const keyvValueTests = (test, Keyv, store) => {
test.beforeEach(async () => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: store() });
await keyv.clear();
});
test.serial('value can be false', async t => {
const keyv = new Keyv({ store });
const keyv = new Keyv({ store: 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 });
const keyv = new Keyv({ store: 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 });
const keyv = new Keyv({ store: 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 });
const keyv = new Keyv({ store: 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 keyv = new Keyv({ store: 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 keyv = new Keyv({ store: 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 keyv = new Keyv({ store: 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 });
const keyv = new Keyv({ store: store() });
await keyv.clear();
});
};

2
packages/keyv-test-suite/test/unit.js

@ -4,5 +4,5 @@ import keyvTestSuite, { keyvOfficialTests } from 'get-root-module';
keyvOfficialTests(test, Keyv, 'redis://localhost', 'redis://foo');
const store = new Map();
const store = () => new Map();
keyvTestSuite(test, Keyv, store);

Loading…
Cancel
Save