UNPKG

@jambonz/realtimedb-helpers

Version:

utility functions for querying jambonz redis database

79 lines (60 loc) 2.51 kB
const test = require('tape').test ; const config = require('config'); const opts = config.get('redis'); async function sleepFor(ms) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(); }, ms); }); } process.on('unhandledRejection', (reason, p) => { console.log('Unhandled Rejection at: Promise', p, 'reason:', reason); }); test('key tests', async(t) => { const fn = require('..'); const {addKey, addKeyNx, deleteKey, retrieveKey, incrKey, decrKey, decrKeyIfExists, client} = fn(opts); try { let result = await addKey('akey', 'value'); t.ok(result === 'OK', 'sucessfully set a key with no expires'); result = await retrieveKey('akey'); t.ok(result === 'value', 'sucessfully retrieved key'); result = await addKey('bkey', 'another value', 3); t.ok(result === 'OK', 'sucessfully set a key with expires'); await deleteKey('akey'); await deleteKey('bkey'); await deleteKey('mykey'); result = await addKeyNx('mykey', 'myvalue', 2); t.ok(result === 'OK', 'sucessfully setnx a key when it does not exist'); result = await addKeyNx('mykey', 'myvalue'); t.ok(result === null, 'setnx returns null if key exists'); await sleepFor(3000) result = await addKeyNx('mykey', 'myvalue'); t.ok(result === 'OK', 'setnx inserts key again if key has expired'); await deleteKey('mykey'); result = await incrKey('mykey'); t.ok(result === 1, 'incrKey initializes to zero if not there'); result = await incrKey('mykey'); t.ok(result === 2, 'incrKey increments key with no expires'); result = await decrKey('mykey'); t.ok(result === 1, 'decrKey works properly when key exists'); result = await decrKeyIfExists('mykey') t.ok(result === 0, 'decrKeyIfExists works properly when key exists'); result = await decrKey('nokey'); t.ok(result === -1, 'decrKey returns -1 when key did not exist'); // Delete key again, because DECR command creates key if it does not exists await deleteKey('nokey') result = await decrKeyIfExists('nokey'); t.ok(result === 0, 'decrKeyIfExists returns 0 when key did not exist') result = await retrieveKey('nokey') t.ok(result === null, 'decrKeyIfExists does not create a key when key did not exist') result = await incrKey('mykey-now', 1); t.ok(result === 1, 'incrKey increments key with expires'); t.end(); } catch (err) { console.error(err); t.end(err); } client.quit(); });