80 lines
3.0 KiB
JavaScript
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');
|
|
});
|
|
});
|