63 lines
2.7 KiB
JavaScript
63 lines
2.7 KiB
JavaScript
// Generated, do not edit. sha256:69bbcbe886b727fc98661cf558624d706763f80b36c5e23baab99e9c498f13cc
|
|
import { describe, it, beforeEach, mock } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
|
|
import { createDbHarness } from '../helpers/db-node.mjs';
|
|
import { CONFIG } from '../../shared/config.js';
|
|
|
|
const harness = createDbHarness({ seedPreferences: true });
|
|
mock.module('../../server/db.js', { namedExports: harness.exports });
|
|
|
|
const { getBaseCurrency } = await import('../../server/data/portfolio.js');
|
|
const { getSettings, updateSettings } = await import('../../server/data/preferences.js');
|
|
const { listBookableAssets } = await import('../../server/data/assets.js');
|
|
|
|
beforeEach(() => harness.recreate());
|
|
|
|
describe('getBaseCurrency', () => {
|
|
it('levert de munt van de database', () => {
|
|
assert.equal(getBaseCurrency(), CONFIG.PORTFOLIO.DEFAULT_BASE_CURRENCY);
|
|
});
|
|
|
|
it('leest de database en niet een standaardwaarde', () => {
|
|
harness.sqlite.exec(`DROP TRIGGER TrPortfolioDelete; DELETE FROM Portfolio;
|
|
INSERT INTO Portfolio (id, baseCurrency, createdAt) VALUES (1, 'USD', NULL)`);
|
|
assert.equal(getBaseCurrency(), 'USD');
|
|
});
|
|
|
|
it('weigert een database zonder munt, in plaats van EUR aan te nemen', () => {
|
|
harness.sqlite.exec(`DROP TRIGGER TrPortfolioDelete; DELETE FROM Portfolio`);
|
|
assert.throws(() => getBaseCurrency(), /no unit of account/);
|
|
});
|
|
});
|
|
|
|
describe('de keuzelijsten volgen de rekenvaluta van de database', () => {
|
|
const munt = (symbol) => harness.exports.run(
|
|
`INSERT INTO Asset (symbol, name, searchName, kind, unit, subunit, decimals, displayUnit)
|
|
VALUES (?, ?, ?, 'fiat', ?, 'cent', 2, 'unit')`, [symbol, symbol, symbol.toLowerCase(), symbol]);
|
|
const symbolen = () => listBookableAssets().map(a => a.symbol);
|
|
|
|
it('in euro: de euro kiesbaar, een ongebruikte dollar niet', () => {
|
|
munt('EUR'); munt('USD');
|
|
assert.deepEqual(symbolen(), ['EUR']);
|
|
});
|
|
|
|
it('in dollars: andersom', () => {
|
|
harness.sqlite.exec(`DROP TRIGGER TrPortfolioDelete; DELETE FROM Portfolio;
|
|
INSERT INTO Portfolio (id, baseCurrency, createdAt) VALUES (1, 'USD', NULL)`);
|
|
munt('EUR'); munt('USD');
|
|
assert.deepEqual(symbolen(), ['USD']);
|
|
});
|
|
});
|
|
|
|
describe('getSettings: de munt rijdt mee, maar is geen instelling', () => {
|
|
it('geeft de munt mee in de momentopname', () => {
|
|
assert.equal(getSettings().baseCurrency, CONFIG.PORTFOLIO.DEFAULT_BASE_CURRENCY);
|
|
});
|
|
|
|
it('laat hem niet via updateSettings wijzigen', async () => {
|
|
await assert.rejects(() => updateSettings({ baseCurrency: 'USD' }), (e) => e.key === 'settings.unknownSetting');
|
|
assert.equal(getBaseCurrency(), CONFIG.PORTFOLIO.DEFAULT_BASE_CURRENCY);
|
|
});
|
|
});
|