refactoring
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
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" });
|
||||
});
|
||||
Reference in New Issue
Block a user