mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-03-30 15:08:28 +00:00
139 lines
3.8 KiB
JavaScript
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()
|
|
})
|
|
})
|
|
})
|