64 lines
2.4 KiB
JavaScript
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);
|
|
});
|
|
});
|