orbitdb/test/orbitdb-drop.test.js
2023-12-15 10:28:58 +02:00

117 lines
2.5 KiB
JavaScript

import { strictEqual } from 'assert'
import { rimraf } from 'rimraf'
import { createOrbitDB } from '../src/index.js'
import createHelia from './utils/create-helia.js'
describe('Drop databases', function () {
this.timeout(5000)
let ipfs
let orbitdb1
let db
before(async () => {
ipfs = await createHelia()
})
after(async () => {
if (ipfs) {
await ipfs.stop()
}
await rimraf('./orbitdb')
await rimraf('./ipfs')
})
describe('dropping a database', () => {
const amount = 10
before(async () => {
orbitdb1 = await createOrbitDB({ ipfs, id: 'user1' })
db = await orbitdb1.open('helloworld')
})
after(async () => {
if (db) {
await db.close()
}
if (orbitdb1) {
await orbitdb1.stop()
}
await rimraf('./orbitdb')
})
it('returns no entries in the database after dropping it', async () => {
for (let i = 0; i < amount; i++) {
await db.add('hello' + i)
}
const before = await db.all()
strictEqual(before.length, amount)
await db.drop()
const after = await db.all()
strictEqual(after.length, 0)
})
it('returns no heads for the database oplog after dropping it', async () => {
for (let i = 0; i < amount; i++) {
await db.add('hello' + i)
}
const before = await db.log.heads()
strictEqual(before.length, 1)
await db.drop()
const after = await db.log.heads()
strictEqual(after.length, 0)
})
it('returns no entries when a dropped database is opened again after closing', async () => {
for (let i = 0; i < amount; i++) {
await db.add('hello' + i)
}
const before = await db.all()
strictEqual(before.length, amount)
await db.drop()
await db.close()
db = await orbitdb1.open('helloworld')
const after = await db.all()
strictEqual(after.length, 0)
})
})
describe('dropping an empty database', () => {
before(async () => {
orbitdb1 = await createOrbitDB({ ipfs, id: 'user1' })
db = await orbitdb1.open('helloworld')
})
after(async () => {
if (db) {
await db.drop()
await db.close()
}
if (orbitdb1) {
await orbitdb1.stop()
}
await rimraf('./orbitdb1')
})
it('doesn\'t error when dropping an empty database', async () => {
let err
try {
await db.drop()
} catch (e) {
err = e
}
strictEqual(err, undefined)
})
})
})