Files
AtreidesAssetsFree/tests/ui/interest-order.test.mjs
T
2026-10-29 11:57:29 +01:00

64 lines
2.4 KiB
JavaScript

// 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);
});
});