// Generated, do not edit. sha256:5fcf7092848d33c8b3e377e39e0ea6329b71d804e01a41ef65f10de8dcfb1874 import { describe, it, mock } from 'node:test'; import assert from 'node:assert/strict'; const TAP = 'bc1p-taproot-input'; const SEG = 'bc1q-segwit-wisselgeld'; const KANAAL = 'bc1q-kanaal-multisig'; const FUNDING = { txid: 'f'.repeat(64), fee: 1000, status: { confirmed: true, block_height: 900_000, block_time: 1_760_000_000 }, vin: [{ prevout: { scriptpubkey_address: TAP, value: 100_000 } }], vout: [{ scriptpubkey_address: KANAAL, value: 70_000 }, { scriptpubkey_address: SEG, value: 29_000 }], }; mock.module('../../client/price/btc-explorer.js', { namedExports: { addressTxs: async () => [FUNDING], fetchJson: async () => ({}), explorerBase: async () => 'https://explorer.test', } }); const { scanMovements } = await import('../../client/price/wallet-scanner.js'); describe('scanMovements over twee bronnen van één account', () => { it('de SegWit-bron ziet met de Taproot-adressen erbij de kanaalopening als uitgaand', async () => { const { rows } = await scanMovements([SEG], 1, 2, null, { ownAddresses: [TAP, SEG] }); assert.deepEqual(rows.map(r => [r.direction, r.valueSats, r.feeSats]), [['out', 70_000, 1000]]); }); it('de Taproot-bron komt op precies dezelfde beweging uit', async () => { const { rows } = await scanMovements([TAP], 1, 3, null, { ownAddresses: [TAP, SEG] }); assert.deepEqual(rows.map(r => [r.direction, r.valueSats, r.feeSats]), [['out', 70_000, 1000]]); }); it('zonder de adressen van het account ziet de SegWit-bron alleen het wisselgeld: de oude fout', async () => { const { rows } = await scanMovements([SEG], 1, 2, null); assert.deepEqual(rows.map(r => [r.direction, r.valueSats]), [['in', 29_000]]); }); it('ook andersom: een SegWit-input met het wisselgeld naar Taproot', async () => { FUNDING.vin = [{ prevout: { scriptpubkey_address: SEG, value: 100_000 } }]; FUNDING.vout = [{ scriptpubkey_address: KANAAL, value: 70_000 }, { scriptpubkey_address: TAP, value: 29_000 }]; try { for (const [bron, eigen] of [[[SEG], 2], [[TAP], 3]]) { const { rows } = await scanMovements(bron, 1, eigen, null, { ownAddresses: [TAP, SEG] }); assert.deepEqual(rows.map(r => [r.direction, r.valueSats, r.feeSats]), [['out', 70_000, 1000]]); } const { rows: oud } = await scanMovements([TAP], 1, 3, null); assert.deepEqual(oud.map(r => [r.direction, r.valueSats]), [['in', 29_000]], 'per bron genet: alleen het wisselgeld'); } finally { FUNDING.vin = [{ prevout: { scriptpubkey_address: TAP, value: 100_000 } }]; FUNDING.vout = [{ scriptpubkey_address: KANAAL, value: 70_000 }, { scriptpubkey_address: SEG, value: 29_000 }]; } }); });