refactor(breadcrumbs): extract callback route renderers into mapped groups

This commit is contained in:
2026-04-09 14:57:47 +01:00
parent 0cd78e6f46
commit 0b905f9374
6 changed files with 159 additions and 50 deletions
@@ -42,6 +42,12 @@ test("breadcrumbs/factory module includes expected mapped route definitions", as
"Expected new-appeal route renderer factory export"
);
assert.strictEqual(
source.includes("export const createCallbackRouteRenderers ="),
true,
"Expected callback route renderer factory export"
);
assert.strictEqual(
source.includes("export const createCaseDetailRouteRenderers ="),
true,
@@ -96,6 +102,18 @@ test("breadcrumbs/factory module includes expected mapped route definitions", as
"Expected /newappeal/selectappeal to be mapped in createNewAppealRouteRenderers"
);
assert.strictEqual(
source.includes('"/myportal/case/id/[incident]": () => ('),
true,
"Expected /myportal/case/id/[incident] to be mapped in createCallbackRouteRenderers"
);
assert.strictEqual(
source.includes('"/case": () => ('),
true,
"Expected /case to be mapped in createCallbackRouteRenderers"
);
assert.strictEqual(
source.includes('"/case/[ticketnumber]": () =>'),
true,
@@ -185,7 +203,7 @@ test("breadcrumbs/component composes mapped routes via imported factories and sh
);
assert.strictEqual(
/const\s+\{[\s\S]*simpleRouteRenderersByPath[\s\S]*newAppealRouteRenderersByPath[\s\S]*detailAndAccountRouteRenderersByPath[\s\S]*\}\s*=\s*createMappedRouteRendererGroups\s*\(/.test(
/const\s+\{[\s\S]*simpleRouteRenderersByPath[\s\S]*newAppealRouteRenderersByPath[\s\S]*callbackRouteRenderersByPath[\s\S]*detailAndAccountRouteRenderersByPath[\s\S]*\}\s*=\s*createMappedRouteRendererGroups\s*\(/.test(
source
),
true,
@@ -351,6 +369,9 @@ test("breadcrumbs/map builder preserves route map ordering", async () => {
const newAppealOrderIndex = mapBuilderSlice.indexOf(
"newAppealRouteRenderersByPath"
);
const callbackOrderIndex = mapBuilderSlice.indexOf(
"callbackRouteRenderersByPath"
);
const caseDetailOrderIndex = mapBuilderSlice.indexOf(
"caseDetailRouteRenderersByPath"
);
@@ -363,26 +384,33 @@ test("breadcrumbs/map builder preserves route map ordering", async () => {
simpleLinkTextPairOrderIndex > simpleRouteOrderIndex &&
simpleMyPortalOrderIndex > simpleLinkTextPairOrderIndex &&
newAppealOrderIndex > simpleMyPortalOrderIndex &&
caseDetailOrderIndex > newAppealOrderIndex &&
callbackOrderIndex > newAppealOrderIndex &&
caseDetailOrderIndex > callbackOrderIndex &&
detailAndAccountOrderIndex > caseDetailOrderIndex,
true,
"Expected map builder call to preserve explicit route-map ordering (simple -> link-text -> myportal -> new-appeal -> case detail -> detail/account)"
"Expected map builder call to preserve explicit route-map ordering (simple -> link-text -> myportal -> new-appeal -> callback -> case detail -> detail/account)"
);
});
test("breadcrumbs/dynamic callback branch remains explicit for myportal case incident route", async () => {
test("breadcrumbs/callback-mapped branches preserve router.back behavior", async () => {
const source = loadBreadcrumbSource();
assert.strictEqual(
source.includes('isPath("/myportal/case/id/[incident]")'),
true,
"Expected dynamic /myportal/case/id/[incident] breadcrumb branch to remain explicit"
false,
"Expected /myportal/case/id/[incident] explicit branch to be removed after callback mapping"
);
assert.strictEqual(
source.includes('isPath("/case")'),
false,
"Expected /case explicit branch to be removed after callback mapping"
);
assert.strictEqual(
source.includes("router.back();"),
true,
"Expected callback-driven router.back() behavior to remain explicit"
"Expected callback-driven router.back() behavior to remain preserved"
);
});