48 lines
2.5 KiB
JavaScript
48 lines
2.5 KiB
JavaScript
// Generated, do not edit. sha256:515b7630b75a6d1f882ae0d4ae11739fa997ad5145e50b0f07c78592fad5f7e2
|
|
import { describe, it } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
|
|
import { carriedPerAsset, carriedDays } from '../../client/wealth/carried.js';
|
|
|
|
const dagen = (van, n) => Array.from({ length: n }, (_, i) =>
|
|
new Date(Date.parse(`${van}T00:00:00Z`) + i * 86_400_000).toISOString().slice(0, 10));
|
|
const rijen = (...ds) => ds.map(d => ({ observedAt: `${d}T00:00:00Z`, fiatPrice: 100 }));
|
|
const BTC = { id: 1, kind: 'crypto' };
|
|
const XAU = { id: 2, kind: 'metal' };
|
|
|
|
describe('carriedPerAsset', () => {
|
|
it('markeert bij crypto elke dag zonder koers, en niet de dagen ervoor', () => {
|
|
const d = dagen('2026-03-01', 6);
|
|
const v = carriedPerAsset({ dagen: d, assets: [BTC], rijenPerAsset: new Map([[1, rijen('2026-03-02', '2026-03-05')]]) });
|
|
assert.deepEqual(v.get(1), [false, false, true, true, false, false]);
|
|
});
|
|
|
|
it('markeert bij metaal een weekend niet, en een week zonder koers wel', () => {
|
|
const d = dagen('2026-03-06', 11);
|
|
const weekend = carriedPerAsset({ dagen: d, assets: [XAU],
|
|
rijenPerAsset: new Map([[2, rijen('2026-03-06', '2026-03-09', '2026-03-10', '2026-03-11', '2026-03-12', '2026-03-13', '2026-03-14', '2026-03-15', '2026-03-16')]]) });
|
|
assert.ok(weekend.get(2).every(x => !x), 'twee dagen dicht is geen gat');
|
|
const week = carriedPerAsset({ dagen: d, assets: [XAU], rijenPerAsset: new Map([[2, rijen('2026-03-06', '2026-03-16')]]) });
|
|
assert.deepEqual(week.get(2), [false, true, true, true, true, true, true, true, true, true, false]);
|
|
});
|
|
|
|
it('telt de laatste dag als geprijsd, laat fiat weg en negeert een koers van nul', () => {
|
|
const d = dagen('2026-03-01', 3);
|
|
const v = carriedPerAsset({ dagen: d, assets: [BTC, { id: 3, kind: 'fiat' }],
|
|
rijenPerAsset: new Map([[1, [...rijen('2026-03-01'), { observedAt: '2026-03-02T00:00:00Z', fiatPrice: 0 }]]]) });
|
|
assert.deepEqual(v.get(1), [false, true, false]);
|
|
assert.equal(v.has(3), false);
|
|
});
|
|
});
|
|
|
|
describe('carriedDays', () => {
|
|
it('neemt alleen dagen waarop je het asset had, over de gekozen assets', () => {
|
|
const d = dagen('2026-03-01', 5);
|
|
const reeks = { dagen: d,
|
|
rijenPerAsset: new Map([[1, rijen('2026-03-01')], [2, rijen('2026-03-01', '2026-03-02', '2026-03-03', '2026-03-04')]]),
|
|
eenhedenPerAsset: new Map([[1, [1, 1, 0, 0, 0]], [2, [1, 1, 1, 1, 1]]]) };
|
|
assert.deepEqual([...carriedDays(reeks, null, [BTC, XAU])], [1]);
|
|
assert.deepEqual([...carriedDays(reeks, [2], [BTC, XAU])], []);
|
|
});
|
|
});
|