Versie 0.2.0
This commit is contained in:
commit
e77d8fd373
495 files changed
+81026
No files matched your search
@@ -0,0 +1,54 @@
|
||||
// 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 }];
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user