UNPKG

hyperjsondb

Version:

A proxymised Json database using hyperdb, to store key-value flat objects

85 lines (67 loc) 2.77 kB
var test = require('tape') var path = require('path') var fs = require('fs') function rimraf (dirPath) { if (fs.existsSync(dirPath)) { fs.readdirSync(dirPath).forEach(function (entry) { var entryPath = path.join(dirPath, entry) if (fs.lstatSync(entryPath).isDirectory()) { rimraf(entryPath) } else { fs.unlinkSync(entryPath) } }) fs.rmdirSync(dirPath) } } var dirPath = './testdb' rimraf(dirPath) var Hyperjsondb = require('./hyperjsondb') var db = new Hyperjsondb(dirPath) db.on('ready', () => { test('Should put an object and get the username', async (t) => { await db.put('/randid', { username: 'Javi' }) t.equal(await db.get('/randid').username, 'Javi') t.equal(await db.get('/randid/username'), 'Javi') t.end() }) test('Should update the object', async (t) => { await db.put('/randid', { username: 'Sam' }) t.equal(await db.get('/randid').username, 'Sam', 'Should proxymise the object') t.equal(await db.get('/randid/username'), 'Sam', 'Should get the correct value') t.end() }) test('Array actions', async (t) => { await db.put('/randid/friends', [{ username: 'Javi' }]) var r1 = await db.get('/randid/friends') t.deepEqual(r1, [{ username: 'Javi' }], 'Should create the Array') await db.put('/randid/friends/0/username', 'Adam') var r2 = await db.get('/randid/friends') t.deepEqual(r2, [{ username: 'Adam' }], 'Should update the [0] object') t.end() }) test('Patch actions', async (t) => { await db.add('/randid/friends', { username: 'Other' }) var r1 = await db.get('/randid/friends') t.deepEqual(r1, [{ username: 'Other' }, { username: 'Adam' }], 'Should add object to array') // console.log('PARTIAL', await db.get('/')) await db.add('/randid', { prop: 'newProp' }) var r3 = await db.get('/') t.deepEqual(r3, { randid: [ { prop: 'newProp' }, { friends: [ { username: 'Other' }, { username: 'Adam' } ], username: 'Sam' } ] }, 'Should add property to root') await db.replace('/randid/1/friends/1/username', 'Sam2018') var r4 = await db.get('/randid/1/friends') t.deepEqual(r4, [{ 'username': 'Other' }, { 'username': 'Sam2018' }], 'Should replace the value') await db.replace('/randid/1/friends/1', { username: 'Sam2019' }) var r5 = await db.get('/randid/1/friends') t.deepEqual(r5, [{ 'username': 'Other' }, { 'username': 'Sam2019' }], 'Should replace the value, from object') await db.replace('/randid/username', 'Javi') var r6 = await db.get('/randid/username') t.deepEqual(r6, 'Javi', 'Should replace the value') await db.remove('/') var r7 = await db.get('/') t.deepEqual(r7, {}, 'Should remove all') t.end() }) })