Files
AtreidesAssetsFree/tests/repo/boekbare-assets.test.mjs
2026-10-29 11:57:29 +01:00

46 lines
1.8 KiB
JavaScript

// Generated, do not edit. sha256:841593fe1e857633d46e2fe3ce5552c3a7874ece2d6acdbc7160656fde1ef2c6
import { describe, it, beforeEach, mock } from 'node:test';
import assert from 'node:assert/strict';
import { createDbHarness } from '../helpers/db-node.mjs';
const harness = createDbHarness();
mock.module('../../server/db.js', { namedExports: harness.exports });
const { listAssets, listBookableAssets } = await import('../../server/data/assets.js');
const { run, lastId } = harness.exports;
function asset(symbol, kind) {
run(`INSERT INTO Asset (symbol, name, searchName, kind, unit, subunit, decimals, displayUnit)
VALUES (?,?,?,?,?,'cent',2,'unit')`, [symbol, symbol, symbol.toLowerCase(), kind, symbol]);
return lastId();
}
const symbolen = rijen => rijen.map(a => a.symbol);
let usd;
beforeEach(() => {
harness.recreate();
asset('BTC', 'crypto');
asset('EUR', 'fiat');
usd = asset('USD', 'fiat');
});
describe('listBookableAssets', () => {
it('laat een ongebruikte vreemde munt weg, en de euro en bitcoin niet', () => {
assert.deepEqual(symbolen(listBookableAssets()), ['BTC', 'EUR']);
assert.deepEqual(symbolen(listAssets()), ['BTC', 'EUR', 'USD'], 'listAssets blijft alles geven');
});
it('toont de munt zodra er een boeking in staat', () => {
run(`INSERT INTO Event (assetId, amount, type, source, occurredAt, createdAt)
VALUES (?, 100, 'transfer', 'manual', '2026-09-01T10:00:00Z', '2026-09-01T10:00:00Z')`, [usd]);
assert.deepEqual(symbolen(listBookableAssets()), ['BTC', 'EUR', 'USD']);
});
it('toont de munt zodra er een balans in staat', () => {
run(`INSERT INTO Valuation (assetId, balance, fiatRate, source, valuedOn, rateAt)
VALUES (?, 100, 0.9, 'manual', '2026-09-01', '2026-09-01T00:00:00Z')`, [usd]);
assert.deepEqual(symbolen(listBookableAssets()), ['BTC', 'EUR', 'USD']);
});
});