Files
modules/storage-autobase/hyper-p2p-autobase-view-sync/test/test.js
T
2026-05-21 02:00:00 -04:00

58 lines
1.5 KiB
JavaScript

require('bare-process/global')
const test = require('brittle')
const { HyperP2PAutobaseViewSync, PROTOCOL } = require('../index.js')
test('exports', (t) => {
t.ok(HyperP2PAutobaseViewSync)
t.is(PROTOCOL, 'autobase-view-sync/v1')
})
test('publishView mergeRemoteView', async (t) => {
const m = new HyperP2PAutobaseViewSync()
m.attach({ open: async () => {} })
m.publishView(3)
t.is(m.currentView().version, 3)
const v5 = m.publishView(5)
t.ok(m.mergeRemoteView({ version: 5, hash: v5.hash, at: Date.now() }))
t.is(m.currentView().version, 5)
await m.close()
})
test('merge rejects regression', async (t) => {
const m = new HyperP2PAutobaseViewSync()
m.publishView(10)
t.not(m.mergeRemoteView({ version: 2, hash: 'x', at: 1 }))
await m.close()
})
test('validation', async (t) => {
const m = new HyperP2PAutobaseViewSync()
try { m.publishView(-1) } catch (e) { t.ok(e) }
await m.close()
})
test('syncStatus snapshot', async (t) => {
const m = new HyperP2PAutobaseViewSync()
m.publishView(2)
t.is(m.syncStatus(5), 'behind')
t.is(m.snapshot().view.version, 2)
await m.close()
})
test('getStats', async (t) => {
const m = new HyperP2PAutobaseViewSync()
t.is(m.getStats().protocol, 'autobase-view-sync/v1')
t.is(m.getStats().mode, 'autobase')
await m.close()
})
test('viewHash ageMs behindBy', async (t) => {
const m = new HyperP2PAutobaseViewSync()
m.publishView(4)
t.ok(m.viewHash())
t.ok(m.ageMs() >= 0)
t.is(m.behindBy(10), 6)
t.ok(m.isAtLeast(4))
await m.close()
})