Files
AtreidesAssetsFree/tests/server/license-portfolios.test.mjs
2026-10-30 12:28:48 +01:00

80 lines
3.0 KiB
JavaScript

// Generated, do not edit. sha256:500c3d5e31a736de36a900bebc7682d080b1ebb8cda99a94331c6ce11a3fab67
import { describe, it, beforeEach, afterEach, mock } from 'node:test';
import assert from 'node:assert/strict';
import { mkdtemp, rm } from 'node:fs/promises';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
let stand = { level: 'free', enforced: true, why: 'none' };
const echt = await import('../../server/license.mjs');
mock.module('../../server/license.mjs', {
namedExports: {
...echt,
licenseState: () => stand,
capacityReached: (soort, huidig) => echt.capacityReached(soort, huidig, stand),
},
});
const { listPortfolios } = await import('../../server/portfolios.mjs');
const { CONFIG } = await import('../../shared/config.js');
const { createPortfolio, archivePortfolio } = await import('../../server/portfolios-admin.mjs');
let DIR;
let vorige;
beforeEach(async () => {
vorige = process.env.ASSETAPP_DATA_DIR;
DIR = await mkdtemp(join(tmpdir(), 'assetapp-lic-'));
process.env.ASSETAPP_DATA_DIR = DIR;
stand = { level: 'free', enforced: true, why: 'none' };
});
afterEach(async () => {
if (vorige === undefined) delete process.env.ASSETAPP_DATA_DIR;
else process.env.ASSETAPP_DATA_DIR = vorige;
await rm(DIR, { recursive: true, force: true });
});
describe('de gratis stand op portefeuilles', () => {
it('laat de EERSTE portefeuille gewoon aanmaken', async () => {
await createPortfolio('Eerste');
assert.equal(listPortfolios().length, 1);
});
it('weigert de TWEEDE, met een vertaalbare sleutel', async () => {
await createPortfolio('Eerste');
await assert.rejects(() => createPortfolio('Tweede'), (fout) => {
assert.equal(fout.key, 'portfolios.maxFree');
assert.equal(fout.params.max, 1);
return true;
});
assert.deepEqual(listPortfolios().map((p) => p.naam), ['Eerste']);
});
it('telt de demo niet mee: naast de demo past nog een eigen portefeuille', async () => {
stand = { level: 'full', enforced: true, why: 'licensed' };
await createPortfolio(CONFIG.PORTFOLIO.DEMO_NAME);
stand = { level: 'free', enforced: true, why: 'none' };
await createPortfolio('Eigen');
await assert.rejects(() => createPortfolio('Tweede'), (fout) => fout.key === 'portfolios.maxFree');
});
it('laat de tweede WEL toe in de betaalde stand', async () => {
await createPortfolio('Eerste');
stand = { level: 'full', enforced: true, why: 'licensed' };
await createPortfolio('Tweede');
assert.equal(listPortfolios().length, 2);
});
it('ARCHIVEREN blijft werken boven de grens, en geeft daarna weer ruimte', async () => {
stand = { level: 'full', enforced: true, why: 'licensed' };
await createPortfolio('Eerste');
await createPortfolio('Tweede');
stand = { level: 'free', enforced: true, why: 'none' };
await archivePortfolio('Tweede');
assert.equal(listPortfolios().length, 1);
await assert.rejects(() => createPortfolio('Derde'), (fout) => fout.key === 'portfolios.maxFree');
});
});