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() })