58 lines
1.5 KiB
JavaScript
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()
|
|
})
|