refactor(breadcrumbs): map step-back route branches into renderer group

This commit is contained in:
2026-04-09 15:03:19 +01:00
parent 0b905f9374
commit cebd47bf1c
6 changed files with 163 additions and 48 deletions
@@ -48,6 +48,12 @@ test("breadcrumbs/factory module includes expected mapped route definitions", as
"Expected callback route renderer factory export"
);
assert.strictEqual(
source.includes("export const createStepBackRouteRenderers ="),
true,
"Expected step-back route renderer factory export"
);
assert.strictEqual(
source.includes("export const createCaseDetailRouteRenderers ="),
true,
@@ -114,6 +120,18 @@ test("breadcrumbs/factory module includes expected mapped route definitions", as
"Expected /case to be mapped in createCallbackRouteRenderers"
);
assert.strictEqual(
source.includes('"/newappeal/[appealtypes]": () => {'),
true,
"Expected /newappeal/[appealtypes] to be mapped in createStepBackRouteRenderers"
);
assert.strictEqual(
source.includes('"/myportal/[appealtypes]": () => {'),
true,
"Expected /myportal/[appealtypes] to be mapped in createStepBackRouteRenderers"
);
assert.strictEqual(
source.includes('"/case/[ticketnumber]": () =>'),
true,
@@ -203,7 +221,7 @@ test("breadcrumbs/component composes mapped routes via imported factories and sh
);
assert.strictEqual(
/const\s+\{[\s\S]*simpleRouteRenderersByPath[\s\S]*newAppealRouteRenderersByPath[\s\S]*callbackRouteRenderersByPath[\s\S]*detailAndAccountRouteRenderersByPath[\s\S]*\}\s*=\s*createMappedRouteRendererGroups\s*\(/.test(
/const\s+\{[\s\S]*simpleRouteRenderersByPath[\s\S]*newAppealRouteRenderersByPath[\s\S]*callbackRouteRenderersByPath[\s\S]*stepBackRouteRenderersByPath[\s\S]*detailAndAccountRouteRenderersByPath[\s\S]*\}\s*=\s*createMappedRouteRendererGroups\s*\(/.test(
source
),
true,
@@ -290,6 +308,18 @@ test("breadcrumbs/component composes mapped routes via imported factories and sh
"Expected /newappeal/selectappeal explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/newappeal/[appealtypes]")'),
false,
"Expected /newappeal/[appealtypes] explicit branch to be removed after step-back mapping"
);
assert.strictEqual(
source.includes('isPath("/myportal/[appealtypes]")'),
false,
"Expected /myportal/[appealtypes] explicit branch to be removed after step-back mapping"
);
assert.strictEqual(
source.includes('isPath("/myportal/case/[ticketnumber]")'),
false,
@@ -372,6 +402,9 @@ test("breadcrumbs/map builder preserves route map ordering", async () => {
const callbackOrderIndex = mapBuilderSlice.indexOf(
"callbackRouteRenderersByPath"
);
const stepBackOrderIndex = mapBuilderSlice.indexOf(
"stepBackRouteRenderersByPath"
);
const caseDetailOrderIndex = mapBuilderSlice.indexOf(
"caseDetailRouteRenderersByPath"
);
@@ -385,10 +418,11 @@ test("breadcrumbs/map builder preserves route map ordering", async () => {
simpleMyPortalOrderIndex > simpleLinkTextPairOrderIndex &&
newAppealOrderIndex > simpleMyPortalOrderIndex &&
callbackOrderIndex > newAppealOrderIndex &&
caseDetailOrderIndex > callbackOrderIndex &&
stepBackOrderIndex > callbackOrderIndex &&
caseDetailOrderIndex > stepBackOrderIndex &&
detailAndAccountOrderIndex > caseDetailOrderIndex,
true,
"Expected map builder call to preserve explicit route-map ordering (simple -> link-text -> myportal -> new-appeal -> callback -> case detail -> detail/account)"
"Expected map builder call to preserve explicit route-map ordering (simple -> link-text -> myportal -> new-appeal -> callback -> step-back -> case detail -> detail/account)"
);
});