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

61 lines
2.1 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import {
cmapRoute,
pageRoute,
parseWikiRoute
} from "../static/js/wiki/routes.js";
test("route builders encode references without changing their identity", () => {
assert.equal(pageRoute("notes:een pagina"), "#/notes%3Aeen%20pagina");
assert.equal(cmapRoute("een kaart"), "#cmap/een%20kaart");
});
test("page, CMap and Todo routes decode their parameters", () => {
assert.deepEqual(parseWikiRoute("#/notes%3Aeen%20pagina"), {
name: "page",
slug: "notes:een pagina"
});
assert.deepEqual(parseWikiRoute("#cmap/een%20kaart"), {
name: "cmap",
slug: "een kaart"
});
assert.deepEqual(parseWikiRoute("#todo/notes%3Aplanning/12"), {
name: "todo",
slug: "notes:planning",
number: 12
});
});
test("search and fixed special routes have explicit names", () => {
assert.deepEqual(parseWikiRoute("#search/een%20term"), {
name: "search",
query: "een term"
});
assert.deepEqual(parseWikiRoute("#profile"), { name: "profile" });
assert.deepEqual(parseWikiRoute("#cmaps"), { name: "cmaps" });
assert.deepEqual(parseWikiRoute("#recent"), { name: "recent" });
assert.deepEqual(parseWikiRoute("#bookmarks"), { name: "bookmarks" });
assert.deepEqual(parseWikiRoute("#todos"), { name: "todos" });
});
test("administration routes remain distinct for permission dispatch", () => {
assert.deepEqual(parseWikiRoute("#admin"), { name: "admin" });
assert.deepEqual(parseWikiRoute("#admin/users"), { name: "admin-users" });
assert.deepEqual(parseWikiRoute("#admin/mail"), { name: "admin-mail" });
assert.deepEqual(parseWikiRoute("#admin/aliases"), { name: "admin-aliases" });
assert.deepEqual(parseWikiRoute("#admin/orphaned-uploads"), {
name: "admin-orphaned-uploads"
});
assert.deepEqual(parseWikiRoute("#admin/archived-cmaps"), {
name: "admin-archived-cmaps"
});
});
test("empty, incomplete and unknown hashes fall back to home", () => {
assert.deepEqual(parseWikiRoute(""), { name: "home" });
assert.deepEqual(parseWikiRoute("#search/"), { name: "home" });
assert.deepEqual(parseWikiRoute("#unknown"), { name: "home" });
});