Files
racket-wiki/test/wiki-reference.test.mjs
T
2026-09-02 08:38:03 +02:00

44 lines
1.5 KiB
JavaScript

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");
});