61 lines
2.1 KiB
JavaScript
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" });
|
|
});
|