pzp-db/test/on-record-deleted-or-erased...

57 lines
1.5 KiB
JavaScript

const test = require('node:test')
const assert = require('node:assert')
const path = require('node:path')
const os = require('node:os')
const p = require('node:util').promisify
const rimraf = require('rimraf')
const Keypair = require('pzp-keypair')
const { createPeer } = require('./util')
const DIR = path.join(os.tmpdir(), 'pzp-db-on-record-deleted-or-erased')
rimraf.sync(DIR)
test('onRecordDeletedOrErased()', async (t) => {
const peer = createPeer({
keypair: Keypair.generate('ed25519', 'alice'),
path: DIR,
})
await peer.db.loaded()
const id = await p(peer.db.account.create)({
subdomain: 'person',
_nonce: 'alice',
})
const msgIDs = []
for (let i = 0; i < 5; i++) {
const rec = await p(peer.db.feed.publish)({
account: id,
domain: 'post',
data: { text: 'm' + i },
})
msgIDs.push(rec.id)
}
const listened1 = []
const remove1 = peer.db.onRecordDeletedOrErased((msgID) => {
listened1.push(msgID)
})
assert.deepEqual(listened1, [], '(nothing)')
await p(peer.db.erase)(msgIDs[2])
assert.deepEqual(listened1, [msgIDs[2]], 'erased')
remove1()
const listened2 = []
const remove2 = peer.db.onRecordDeletedOrErased((msgID) => {
listened2.push(msgID)
})
assert.deepEqual(listened2, [msgIDs[2]], 'erased')
await p(peer.db.del)(msgIDs[1])
assert.deepEqual(listened2, [msgIDs[2], msgIDs[1]], 'erased and deleted')
remove2()
assert.deepEqual(listened1, [msgIDs[2]], 'erased') // still the same
await p(peer.close)(true)
})