44 lines
1.5 KiB
JavaScript
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");
|
|
});
|