import test from "node:test"; import assert from "node:assert/strict"; import { newPageReference, pageReference, slugTitle, splitPageReference, wikiWordTarget } from "../static/js/wiki/reference.js"; test("wiki references preserve root and namespace syntax", () => { assert.deepEqual(splitPageReference("roadmap"), { namespace: "", slug: "roadmap" }); assert.deepEqual(splitPageReference("racket:roadmap"), { namespace: "racket", slug: "roadmap" }); assert.equal(pageReference("", "roadmap"), "roadmap"); assert.equal(pageReference(" racket ", "roadmap"), "racket:roadmap"); }); test("freely entered page names become bounded wiki references", () => { assert.equal(newPageReference("Racket:Résumé pagina"), "racket:resume-pagina"); assert.equal(newPageReference(" Nieuwe pagina "), "nieuwe-pagina"); assert.equal(newPageReference(""), null); assert.equal(newPageReference(":"), null); }); test("WikiWords resolve to existing aliases or predictable new targets", () => { const aliases = new Map([ [":homeopathiewiki", { slug: "homeopathie", title: "Homeopathie Wiki" }] ]); assert.deepEqual(wikiWordTarget("HomeopathieWiki", aliases), { slug: "homeopathie", title: "Homeopathie Wiki" }); assert.deepEqual(wikiWordTarget("NieuwePagina", aliases, "notes"), { slug: "notes:nieuwe-pagina", title: "Nieuwe Pagina" }); assert.equal(wikiWordTarget("geen-wikiword", aliases), null); assert.equal(slugTitle("notes:nieuwe-pagina"), "Nieuwe Pagina"); });