orbitdb/test/kvstore.test.js
2022-12-20 01:12:56 +00:00

139 lines
3.8 KiB
JavaScript

import assert from 'assert'
import rmrf from 'rimraf'
import path from 'path'
import OrbitDB from '../src/OrbitDB.js'
// Include test utilities
import {
config,
startIpfs,
stopIpfs,
testAPIs,
} from 'orbit-db-test-utils'
const dbPath = './orbitdb/tests/kvstore'
Object.keys(testAPIs).forEach(API => {
describe(`orbit-db - Key-Value Database (${API})`, function() {
this.timeout(config.timeout)
let ipfsd, ipfs, orbitdb1
before(async () => {
rmrf.sync(dbPath)
ipfsd = await startIpfs(API, config.daemon1)
ipfs = ipfsd.api
orbitdb1 = await OrbitDB.createInstance(ipfs, { directory: path.join(dbPath, '1') })
})
after(() => {
setTimeout(async () => {
await orbitdb1.stop()
await stopIpfs(ipfsd)
}, 0)
})
it('creates and opens a database', async () => {
const db = await orbitdb1.keyvalue('first kv database')
assert.notEqual(db, null)
assert.equal(db.type, 'keyvalue')
assert.equal(db.dbname, 'first kv database')
await db.drop()
})
it('put', async () => {
const db = await orbitdb1.keyvalue('first kv database')
await db.put('key1', 'hello1')
const value = db.get('key1')
assert.equal(value, 'hello1')
await db.drop()
})
it('get', async () => {
const db = await orbitdb1.keyvalue('first kv database')
await db.put('key1', 'hello2')
const value = db.get('key1')
assert.equal(value, 'hello2')
await db.drop()
})
it('put updates a value', async () => {
const db = await orbitdb1.keyvalue('first kv database')
await db.put('key1', 'hello3')
await db.put('key1', 'hello4')
const value = db.get('key1')
assert.equal(value, 'hello4')
await db.drop()
})
it('set is an alias for put', async () => {
const db = await orbitdb1.keyvalue('first kv database')
await db.set('key1', 'hello5')
const value = db.get('key1')
assert.equal(value, 'hello5')
await db.drop()
})
it('put/get - multiple keys', async () => {
const db = await orbitdb1.keyvalue('first kv database')
await db.put('key1', 'hello1')
await db.put('key2', 'hello2')
await db.put('key3', 'hello3')
const v1 = db.get('key1')
const v2 = db.get('key2')
const v3 = db.get('key3')
assert.equal(v1, 'hello1')
assert.equal(v2, 'hello2')
assert.equal(v3, 'hello3')
await db.drop()
})
it('deletes a key', async () => {
const db = await orbitdb1.keyvalue('first kv database')
await db.put('key1', 'hello!')
await db.del('key1')
const value = db.get('key1')
assert.equal(value, null)
await db.drop()
})
it('deletes a key after multiple updates', async () => {
const db = await orbitdb1.keyvalue('first kv database')
await db.put('key1', 'hello1')
await db.put('key1', 'hello2')
await db.put('key1', 'hello3')
await db.del('key1')
const value = db.get('key1')
assert.equal(value, null)
await db.drop()
})
it('get - integer value', async () => {
const db = await orbitdb1.keyvalue('first kv database')
const val = 123
await db.put('key1', val)
const v1 = db.get('key1')
assert.equal(v1, val)
await db.drop()
})
it('get - object value', async () => {
const db = await orbitdb1.keyvalue('first kv database')
const val = { one: 'first', two: 2 }
await db.put('key1', val)
const v1 = db.get('key1')
assert.deepEqual(v1, val)
await db.drop()
})
it('get - array value', async () => {
const db = await orbitdb1.keyvalue('first kv database')
const val = [1, 2, 3, 4, 5]
await db.put('key1', val)
const v1 = db.get('key1')
assert.deepEqual(v1, val)
await db.drop()
})
})
})