65 lines
2.4 KiB
JavaScript
65 lines
2.4 KiB
JavaScript
// okf-vocab.test.mjs
|
|
// Tester det lukkede OKF-vokabularet (type+tags) og type->nivaa-ruting for
|
|
// innboks-ingestion (Step 2). snapType: exact-match -> kanonisk, ellers safe
|
|
// default Dokument; snapTags dropper ukjente; routeLevel mapper type til
|
|
// bundle-nivaa. Direkte import (zero npm deps). Moenster: tests/frontmatter.test.mjs.
|
|
|
|
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import {
|
|
TYPE_VOCAB,
|
|
TAGS_VOCAB,
|
|
snapType,
|
|
snapTags,
|
|
routeLevel,
|
|
} from '../lib/okf-vocab.mjs';
|
|
|
|
test('snapType: kjent type beholdes kanonisk', () => {
|
|
assert.equal(snapType('OKR'), 'OKR');
|
|
assert.equal(snapType('Tildelingsbrev'), 'Tildelingsbrev');
|
|
});
|
|
|
|
test('snapType: ukjent type -> safe default Dokument', () => {
|
|
assert.equal(snapType('ukjent'), 'Dokument');
|
|
assert.equal(snapType(''), 'Dokument');
|
|
assert.equal(snapType(undefined), 'Dokument');
|
|
});
|
|
|
|
test('snapTags: dropper ukjente, beholder kjente (bevart rekkefolge)', () => {
|
|
assert.deepEqual(snapTags(['Strategi', 'xyz']), ['Strategi']);
|
|
assert.deepEqual(snapTags(['xyz', 'abc']), []);
|
|
assert.deepEqual(snapTags([]), []);
|
|
});
|
|
|
|
test('snapTags: ikke-array -> tom liste (ingen krasj)', () => {
|
|
assert.deepEqual(snapTags(undefined), []);
|
|
assert.deepEqual(snapTags(null), []);
|
|
});
|
|
|
|
test('routeLevel: strategisk-kontekst for foringsdokumenter', () => {
|
|
assert.equal(routeLevel('Tildelingsbrev'), 'strategisk-kontekst');
|
|
assert.equal(routeLevel('Virksomhetsplan'), 'strategisk-kontekst');
|
|
assert.equal(routeLevel('Overordnede OKR'), 'strategisk-kontekst');
|
|
});
|
|
|
|
test('routeLevel: historikk for Retrospektiv', () => {
|
|
assert.equal(routeLevel('Retrospektiv'), 'historikk');
|
|
});
|
|
|
|
test('routeLevel: dokumenter for OKR/Status/Notat/Dokument/Organisasjonsprofil', () => {
|
|
assert.equal(routeLevel('OKR'), 'dokumenter');
|
|
assert.equal(routeLevel('Status'), 'dokumenter');
|
|
assert.equal(routeLevel('Notat'), 'dokumenter');
|
|
assert.equal(routeLevel('Dokument'), 'dokumenter');
|
|
assert.equal(routeLevel('Organisasjonsprofil'), 'dokumenter');
|
|
});
|
|
|
|
test('routeLevel: ukjent type -> default dokumenter', () => {
|
|
assert.equal(routeLevel('Whatever'), 'dokumenter');
|
|
});
|
|
|
|
test('vokabular non-tomt + default i settet', () => {
|
|
assert.ok(TYPE_VOCAB.length > 0, 'TYPE_VOCAB non-tomt');
|
|
assert.ok(TAGS_VOCAB.length > 0, 'TAGS_VOCAB non-tomt');
|
|
assert.ok(TYPE_VOCAB.includes('Dokument'), 'default Dokument er i vokabularet');
|
|
});
|