// 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'); });