Extract additional routes in to shared renderer factory

This commit is contained in:
2026-04-09 13:56:17 +01:00
parent c264830934
commit 96946ed205
7 changed files with 293 additions and 88 deletions
@@ -57,15 +57,23 @@ test("buildBreadcrumbRendererMaps returns grouped maps in explicit precedence or
const simpleMyPortalRouteRenderersByPath = {
"/gamma": () => "gamma"
};
const caseDetailRouteRenderersByPath = {
"/delta": () => "delta"
};
const detailAndAccountRouteRenderersByPath = {
"/epsilon": () => "epsilon"
};
const result = buildBreadcrumbRendererMaps({
simpleRouteRenderersByPath,
simpleLinkTextPairRenderersByPath,
simpleMyPortalRouteRenderersByPath
simpleMyPortalRouteRenderersByPath,
caseDetailRouteRenderersByPath,
detailAndAccountRouteRenderersByPath
});
assert.ok(Array.isArray(result), "Expected grouped maps array");
assert.strictEqual(result.length, 3, "Expected three grouped route maps");
assert.strictEqual(result.length, 5, "Expected five grouped route maps");
assert.strictEqual(
result[0],
simpleRouteRenderersByPath,
@@ -81,6 +89,16 @@ test("buildBreadcrumbRendererMaps returns grouped maps in explicit precedence or
simpleMyPortalRouteRenderersByPath,
"Expected my-portal route renderers third"
);
assert.strictEqual(
result[3],
caseDetailRouteRenderersByPath,
"Expected case detail route renderers fourth"
);
assert.strictEqual(
result[4],
detailAndAccountRouteRenderersByPath,
"Expected detail and account route renderers fifth"
);
});
test("resolveMappedRouteRenderer returns renderer from first matching grouped map", () => {
@@ -97,7 +115,9 @@ test("resolveMappedRouteRenderer returns renderer from first matching grouped ma
simpleLinkTextPairRenderersByPath: {
"/known": secondRenderer
},
simpleMyPortalRouteRenderersByPath: {}
simpleMyPortalRouteRenderersByPath: {},
caseDetailRouteRenderersByPath: {},
detailAndAccountRouteRenderersByPath: {}
});
const result = resolveMappedRouteRenderer("/known", maps);
@@ -113,21 +133,23 @@ test("resolveMappedRouteRenderer returns renderer from later grouped map when ea
const { buildBreadcrumbRendererMaps, resolveMappedRouteRenderer } =
loadHelpers();
const myPortalRenderer = () => "myportal";
const detailRenderer = () => "detail";
const maps = buildBreadcrumbRendererMaps({
simpleRouteRenderersByPath: {},
simpleLinkTextPairRenderersByPath: {},
simpleMyPortalRouteRenderersByPath: {
"/myportal/searchresults": myPortalRenderer
simpleMyPortalRouteRenderersByPath: {},
caseDetailRouteRenderersByPath: {},
detailAndAccountRouteRenderersByPath: {
"/account/personaldetails": detailRenderer
}
});
const result = resolveMappedRouteRenderer("/myportal/searchresults", maps);
const result = resolveMappedRouteRenderer("/account/personaldetails", maps);
assert.strictEqual(
result,
myPortalRenderer,
detailRenderer,
"Expected resolver to return matching renderer from later grouped map"
);
});
@@ -141,7 +163,9 @@ test("resolveMappedRouteRenderer returns null for unmapped path", () => {
"/known": () => "known"
},
simpleLinkTextPairRenderersByPath: {},
simpleMyPortalRouteRenderersByPath: {}
simpleMyPortalRouteRenderersByPath: {},
caseDetailRouteRenderersByPath: {},
detailAndAccountRouteRenderersByPath: {}
});
const result = resolveMappedRouteRenderer("/unknown", maps);