Files
pedwfrontend/tests/phase22/breadcrumb-route-maps-helper.test.cjs
T

70 lines
1.9 KiB
JavaScript

const assert = require("assert");
const {
buildBreadcrumbRendererMaps,
getMappedRendererByPath,
resolveMappedRouteRenderer
} = require("../../lib/routing/breadcrumbRouteMaps");
const tests = [];
const test = (name, fn) => tests.push({ name, fn });
test("breadcrumbRouteMaps/buildBreadcrumbRendererMaps preserves explicit map order", async () => {
const mapA = { "/a": () => "A" };
const mapB = { "/b": () => "B" };
const mapC = { "/c": () => "C" };
const result = buildBreadcrumbRendererMaps({
simpleRouteRenderersByPath: mapA,
simpleLinkTextPairRenderersByPath: mapB,
simpleMyPortalRouteRenderersByPath: mapC
});
assert.strictEqual(result[0], mapA);
assert.strictEqual(result[1], mapB);
assert.strictEqual(result[2], mapC);
});
test("breadcrumbRouteMaps/getMappedRendererByPath returns mapped renderer or null", async () => {
const renderer = () => "ok";
const map = { "/x": renderer };
assert.strictEqual(getMappedRendererByPath("/x", map), renderer);
assert.strictEqual(getMappedRendererByPath("/missing", map), null);
});
test("breadcrumbRouteMaps/resolveMappedRouteRenderer honors map precedence", async () => {
const firstRenderer = () => "first";
const secondRenderer = () => "second";
const result = resolveMappedRouteRenderer("/same", [
{ "/same": firstRenderer },
{ "/same": secondRenderer }
]);
assert.strictEqual(result, firstRenderer);
assert.strictEqual(resolveMappedRouteRenderer("/none", []), null);
});
const run = async () => {
let passed = 0;
for (const currentTest of tests) {
await currentTest.fn();
passed += 1;
}
console.log(
`Phase 22 breadcrumb-route-maps-helper tests passed (${passed}/${tests.length}).`
);
};
module.exports = run;
if (require.main === module) {
run().catch((error) => {
console.error(error);
process.exit(1);
});
}