Versie 0.2.0
This commit is contained in:
commit
e77d8fd373
495 files changed
+81026
No files matched your search
@@ -0,0 +1,78 @@
|
||||
// Generated, do not edit. sha256:6ad601b19ff4b76c3fb34f868abd93917ef0af58cb521f376bcb0c43c66b6827
|
||||
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 { createEvent, updateEvent, deleteEvent, listEvents } = await import('../../server/data/events.js');
|
||||
const { createValuation, updateValuation, deleteValuation, acceptValuationGap } = await import('../../server/data/valuations.js');
|
||||
const { createSchedule, updateSchedule, deleteSchedule } = await import('../../server/data/interest-schedules.js');
|
||||
const { takeChanges } = await import('../../server/data/_events.js');
|
||||
|
||||
let btc, acc;
|
||||
beforeEach(() => {
|
||||
harness.recreate();
|
||||
harness.exports.run(
|
||||
`INSERT INTO Asset (symbol, name, searchName, kind, unit, subunit, decimals, displayUnit) VALUES ('BTC','Bitcoin','bitcoin','crypto','BTC','sat',8,'subunit')`);
|
||||
btc = harness.exports.lastId();
|
||||
harness.exports.run(`INSERT INTO Account (name, searchName, kind, isOwnCustody, scanEnabled, isActive, closedAt) VALUES ('A','a','wallet',1,0,1,NULL)`);
|
||||
acc = harness.exports.lastId();
|
||||
takeChanges();
|
||||
});
|
||||
|
||||
const aankoop = { assetId: btc, type: 'buy', occurredAt: '2024-03-01T00:00:00Z', amount: 100_000,
|
||||
fiatPrice: 30_000, toAccountId: acc, source: 'manual' };
|
||||
const balans = () => ({ assetId: btc, valuedOn: '2024-04-01', accountId: acc, balance: 100_000,
|
||||
fiatRate: 30_000, rateAt: '2024-03-31T22:00:00Z', source: 'manual' });
|
||||
const afspraak = () => ({ accountId: acc, rateKind: 'fixed', principalAssetId: btc, payoutAssetId: btc,
|
||||
principalAmount: 100_000, annualRate: 0.05, startsOn: '2024-01-01', endsOn: '2025-01-01', creditCadence: 'annual' });
|
||||
|
||||
const signaal = () => assert.deepEqual(takeChanges(), ['ledger-changed']);
|
||||
|
||||
describe('ledger-changed: boekingen', () => {
|
||||
it('bij aanmaken, wijzigen en verwijderen', async () => {
|
||||
const id = await createEvent({ ...aankoop, assetId: btc, toAccountId: acc });
|
||||
signaal();
|
||||
await updateEvent(id, { ...aankoop, assetId: btc, toAccountId: acc, amount: 200_000 });
|
||||
signaal();
|
||||
await deleteEvent(id);
|
||||
signaal();
|
||||
});
|
||||
|
||||
it('niet bij een geweigerde boeking, want er veranderde niets', async () => {
|
||||
await assert.rejects(() => createEvent({ ...aankoop, assetId: btc, toAccountId: acc, fiatPrice: null }));
|
||||
assert.deepEqual(takeChanges(), []);
|
||||
});
|
||||
|
||||
it('niet bij lezen', () => {
|
||||
listEvents();
|
||||
assert.deepEqual(takeChanges(), []);
|
||||
});
|
||||
});
|
||||
|
||||
describe('ledger-changed: balansen', () => {
|
||||
it('bij aanmaken, wijzigen, aanvaarden en verwijderen', async () => {
|
||||
const id = await createValuation(balans());
|
||||
signaal();
|
||||
await updateValuation(id, { ...balans(), balance: 150_000 });
|
||||
signaal();
|
||||
await acceptValuationGap(id);
|
||||
signaal();
|
||||
await deleteValuation(id);
|
||||
signaal();
|
||||
});
|
||||
});
|
||||
|
||||
describe('ledger-changed: rente-afspraken', () => {
|
||||
it('bij aanmaken, wijzigen en verwijderen, want begin en einde staan op de activiteitslijn', async () => {
|
||||
const id = await createSchedule(afspraak());
|
||||
signaal();
|
||||
await updateSchedule(id, { ...afspraak(), annualRate: 0.04 });
|
||||
signaal();
|
||||
await deleteSchedule(id);
|
||||
signaal();
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user