41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
require('bare-process/global')
|
|
const test = require('brittle')
|
|
const { HyperP2PCreditLedger, PROTOCOL } = require('../index.js')
|
|
|
|
test('exports', (t) => {
|
|
t.ok(HyperP2PCreditLedger)
|
|
t.is(PROTOCOL, 'credit-ledger/v1')
|
|
})
|
|
|
|
test('credit debit transfer', async (t) => {
|
|
const m = new HyperP2PCreditLedger()
|
|
m.openAccount('a', 100)
|
|
m.openAccount('b', 0)
|
|
m.transfer('a', 'b', 30)
|
|
t.is(m.balance('a'), 70)
|
|
t.is(m.balance('b'), 30)
|
|
await m.close()
|
|
})
|
|
|
|
test('insufficient funds', async (t) => {
|
|
const m = new HyperP2PCreditLedger()
|
|
m.openAccount('a', 5)
|
|
try { m.transfer('a', 'b', 10) } catch (e) { t.ok(e) }
|
|
await m.close()
|
|
})
|
|
|
|
test('remote ledger entry', async (t) => {
|
|
const m = new HyperP2PCreditLedger()
|
|
m.openAccount('x', 0)
|
|
m._onGossip({ type: 'ledger-entry', accountId: 'x', kind: 'credit', balance: 50, at: Date.now() })
|
|
t.is(m.balance('x'), 50)
|
|
await m.close()
|
|
})
|
|
|
|
test('getStats', async (t) => {
|
|
const m = new HyperP2PCreditLedger()
|
|
m.openAccount('z')
|
|
t.ok(m.getStats().accounts >= 1)
|
|
await m.close()
|
|
})
|