Files
AtreidesAssetsFree/tests/ui/license-notice.test.mjs
T

96 lines
3.8 KiB
JavaScript
Raw Normal View History

2026-10-29 11:57:29 +01:00
// Generated, do not edit. sha256:6129a8bbffc98b951f97ab835b37848de841b315ab86079ee5c45996f7fe3fe5
import { describe, it, beforeEach, mock } from 'node:test';
import assert from 'node:assert/strict';
const opslag = new Map();
const sleutel = (scope, key) => `${scope}::${key}`;
let stand = null;
mock.module('../../client/data/_rpc.js', {
namedExports: {
async rpc(module, functie, ...args) {
if (module === 'license-status' && functie === 'licenseStatus') return stand;
if (module === 'preferences' && functie === 'getPref') {
const [scope, key, fallback] = args;
return opslag.has(sleutel(scope, key)) ? opslag.get(sleutel(scope, key)) : fallback;
}
if (module === 'preferences' && functie === 'setPref') {
const [scope, key, waarde] = args;
opslag.set(sleutel(scope, key), waarde);
return null;
}
throw new Error(`onverwachte aanroep in deze test: ${module}.${functie}`);
},
decodeer: v => v,
setRowGuard() {},
rowGuardAan: () => false,
},
});
const { loadLicense, licenseFingerprint, licenseChangedSinceSeen, markLicenseSeen } =
await import('../../client/license.js');
const GRATIS = {
level: 'free', why: 'none', enforced: true, version: '1.0.0', installed: null,
installedCovers: false, buyer: null, issued: null, max: { assets: 1 }, features: { ai: false },
};
const BETAALD = {
level: 'full', why: 'licensed', enforced: true, version: '1.0.0',
installed: { buyer: 'npub1abc', issued: '2026-09-21', majorFrom: 1, majorTo: 'unlimited' },
installedCovers: true, buyer: 'npub1abc', issued: '2026-09-21', max: null, features: null,
};
beforeEach(() => { opslag.clear(); stand = GRATIS; });
describe('de vingerafdruk van de licentie', () => {
it('is gelijk voor twee keer dezelfde stand', () => {
assert.equal(licenseFingerprint(GRATIS), licenseFingerprint({ ...GRATIS }));
});
it('verschilt als de stand omslaat', () => {
assert.notEqual(licenseFingerprint(GRATIS), licenseFingerprint(BETAALD));
});
it('verschilt als een ANDERE licentie op dezelfde stand staat', () => {
const ander = { ...BETAALD, buyer: 'npub1xyz', installed: { ...BETAALD.installed, buyer: 'npub1xyz' } };
assert.notEqual(licenseFingerprint(BETAALD), licenseFingerprint(ander));
});
it('verschilt als het bereik verschuift, ook bij dezelfde koper', () => {
const smaller = { ...BETAALD, installed: { ...BETAALD.installed, majorTo: 1 } };
assert.notEqual(licenseFingerprint(BETAALD), licenseFingerprint(smaller));
});
it('verschilt als de REDEN verandert bij dezelfde stand', () => {
assert.notEqual(licenseFingerprint(GRATIS), licenseFingerprint({ ...GRATIS, why: 'invalid' }));
});
it('geeft een lege afdruk zonder momentopname, en gooit niet', () => {
assert.equal(licenseFingerprint(null), '');
});
});
describe('is er iets te melden', () => {
it('MELDT NIETS op de eerste ronde en legt de stand stil vast', async () => {
assert.equal(await licenseChangedSinceSeen(), false);
assert.equal(opslag.get(sleutel('license', 'seen')), undefined, 'er is nog niets geladen');
await loadLicense();
assert.equal(await licenseChangedSinceSeen(), false, 'de eerste ronde meldt niets');
assert.equal(opslag.get(sleutel('license', 'seen')), licenseFingerprint(GRATIS),
'en hij legt de stand vast, anders meldt de tweede ronde het alsnog');
assert.equal(await licenseChangedSinceSeen(), false, 'de tweede ronde ook niet');
});
it('meldt het zodra de stand omslaat, en zwijgt weer als je gekeken hebt', async () => {
await loadLicense();
await licenseChangedSinceSeen();
stand = BETAALD;
await loadLicense();
assert.equal(await licenseChangedSinceSeen(), true, 'een nieuwe licentie is nieuws');
await markLicenseSeen();
assert.equal(await licenseChangedSinceSeen(), false);
});
});