// Generated, do not edit. sha256:6a1216df5bf39806d948913415bd20789617aa1ad15c9edd5dfc0d910d79365a import { describe, it } from 'node:test'; import assert from 'node:assert/strict'; import { byPeriod, bookableDues, dueKey } from '../../client/actions/interest-order.js'; const d = (scheduleId, accountId, periodStart, periodEnd) => ({ scheduleId, accountId, periodStart, periodEnd }); describe('byPeriod', () => { it('zet de oudste bijschrijving vooraan', () => { const gesorteerd = byPeriod([ d(2, 1, '2025-06-01', '2025-07-01'), d(1, 1, '2024-01-01', '2024-02-01'), d(1, 1, '2024-02-01', '2024-03-01'), ]); assert.deepEqual(gesorteerd.map(x => x.periodEnd), ['2024-02-01', '2024-03-01', '2025-07-01']); }); it('laat de invoer ongemoeid', () => { const invoer = [d(1, 1, '2024-02-01', '2024-03-01'), d(1, 1, '2024-01-01', '2024-02-01')]; byPeriod(invoer); assert.equal(invoer[0].periodEnd, '2024-03-01', 'de originele lijst is niet omgezet'); }); }); describe('bookableDues', () => { it('laat per account alleen de oudste boeken', () => { const due = [ d(1, 1, '2024-01-01', '2024-02-01'), d(1, 1, '2024-02-01', '2024-03-01'), d(1, 1, '2024-03-01', '2024-04-01'), ]; const boekbaar = bookableDues(due); assert.deepEqual([...boekbaar], [dueKey(due[0])]); }); it('rekent per account en niet over de rekeningen heen', () => { const oudA = d(1, 1, '2024-01-01', '2024-02-01'); const oudB = d(2, 2, '2025-01-01', '2025-02-01'); const nieuwB = d(2, 2, '2025-02-01', '2025-03-01'); const boekbaar = bookableDues([oudA, oudB, nieuwB]); assert.ok(boekbaar.has(dueKey(oudA))); assert.ok(boekbaar.has(dueKey(oudB)), 'de oudste van rekening 2 mag óók, ondanks de oudere op 1'); assert.equal(boekbaar.has(dueKey(nieuwB)), false); }); it('laat bij een gelijke crediteringsdag allebei door', () => { const een = d(1, 1, '2024-01-01', '2024-02-01'); const twee = d(2, 1, '2023-12-01', '2024-02-01'); const boekbaar = bookableDues([een, twee]); assert.equal(boekbaar.size, 2); }); it('is leeg bij een lege lijst', () => { assert.equal(bookableDues([]).size, 0); }); it('geeft de volgende vrij zodra de oudste uit de lijst is', () => { const due = [d(1, 1, '2024-01-01', '2024-02-01'), d(1, 1, '2024-02-01', '2024-03-01')]; assert.equal(bookableDues(due.slice(1)).has(dueKey(due[1])), true); }); });