refactor(breadcrumbs): extract representation route-state renderer group
This commit is contained in:
+16
-31
@@ -216,6 +216,7 @@ const Breadcrumbs = (props) => {
|
|||||||
newAppealRouteRenderersByPath,
|
newAppealRouteRenderersByPath,
|
||||||
callbackRouteRenderersByPath,
|
callbackRouteRenderersByPath,
|
||||||
stepBackRouteRenderersByPath,
|
stepBackRouteRenderersByPath,
|
||||||
|
representationRouteRenderersByPath,
|
||||||
caseDetailRouteRenderersByPath,
|
caseDetailRouteRenderersByPath,
|
||||||
detailAndAccountRouteRenderersByPath
|
detailAndAccountRouteRenderersByPath
|
||||||
} = createMappedRouteRendererGroups({
|
} = createMappedRouteRendererGroups({
|
||||||
@@ -242,6 +243,20 @@ const Breadcrumbs = (props) => {
|
|||||||
onStepBackWithInlineClass: () => {
|
onStepBackWithInlineClass: () => {
|
||||||
setCurrentSection(appealType.currentSection - 1);
|
setCurrentSection(appealType.currentSection - 1);
|
||||||
},
|
},
|
||||||
|
currentView,
|
||||||
|
hasRepDetails,
|
||||||
|
repDetails,
|
||||||
|
showQuestionnaireSection,
|
||||||
|
onRepresentationSubmitBackFromConfirmation: () => {
|
||||||
|
setRepresentationSubmit(qcount);
|
||||||
|
},
|
||||||
|
onRepresentationSubmitBackToDetails: () => {
|
||||||
|
setRepresentationSubmit(false);
|
||||||
|
},
|
||||||
|
onRepresentationQuestionnaireBack: () => {
|
||||||
|
setShowQuestionnaireSection(showQuestionnaireSection - 1);
|
||||||
|
setRepresentationSubmit(false);
|
||||||
|
},
|
||||||
renderAnchorCrumb,
|
renderAnchorCrumb,
|
||||||
renderLinkCrumb,
|
renderLinkCrumb,
|
||||||
renderTextCrumb,
|
renderTextCrumb,
|
||||||
@@ -259,6 +274,7 @@ const Breadcrumbs = (props) => {
|
|||||||
newAppealRouteRenderersByPath,
|
newAppealRouteRenderersByPath,
|
||||||
callbackRouteRenderersByPath,
|
callbackRouteRenderersByPath,
|
||||||
stepBackRouteRenderersByPath,
|
stepBackRouteRenderersByPath,
|
||||||
|
representationRouteRenderersByPath,
|
||||||
caseDetailRouteRenderersByPath,
|
caseDetailRouteRenderersByPath,
|
||||||
detailAndAccountRouteRenderersByPath
|
detailAndAccountRouteRenderersByPath
|
||||||
});
|
});
|
||||||
@@ -284,37 +300,6 @@ const Breadcrumbs = (props) => {
|
|||||||
|
|
||||||
{isPath("/newappeal") && <></>}
|
{isPath("/newappeal") && <></>}
|
||||||
|
|
||||||
{isPath("/myportal/representation") && (
|
|
||||||
<>
|
|
||||||
{currentView.representationSubmit === true &&
|
|
||||||
currentView.representationSubmitConfirmation !==
|
|
||||||
true &&
|
|
||||||
renderBackCrumb(() => {
|
|
||||||
setRepresentationSubmit(qcount);
|
|
||||||
})}
|
|
||||||
|
|
||||||
{currentView.representationSubmit !== true &&
|
|
||||||
hasRepDetails &&
|
|
||||||
repDetails?.representationType !==
|
|
||||||
"Questionnaire" &&
|
|
||||||
renderBackCrumb(() => {
|
|
||||||
setRepresentationSubmit(false);
|
|
||||||
})}
|
|
||||||
|
|
||||||
{currentView.representationSubmit !== true &&
|
|
||||||
hasRepDetails &&
|
|
||||||
repDetails?.representationType ===
|
|
||||||
"Questionnaire" &&
|
|
||||||
showQuestionnaireSection > 1 &&
|
|
||||||
renderBackCrumb(() => {
|
|
||||||
setShowQuestionnaireSection(
|
|
||||||
showQuestionnaireSection - 1
|
|
||||||
);
|
|
||||||
setRepresentationSubmit(false);
|
|
||||||
})}
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{staticTextCrumbLabel &&
|
{staticTextCrumbLabel &&
|
||||||
renderTextCrumb(staticTextCrumbLabel)}
|
renderTextCrumb(staticTextCrumbLabel)}
|
||||||
</ol>
|
</ol>
|
||||||
|
|||||||
@@ -203,6 +203,36 @@ export const createStepBackRouteRenderers = ({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const createRepresentationRouteRenderers = ({
|
||||||
|
currentView,
|
||||||
|
hasRepDetails,
|
||||||
|
repDetails,
|
||||||
|
showQuestionnaireSection,
|
||||||
|
onRepresentationSubmitBackFromConfirmation,
|
||||||
|
onRepresentationSubmitBackToDetails,
|
||||||
|
onRepresentationQuestionnaireBack,
|
||||||
|
renderBackCrumb
|
||||||
|
}) => ({
|
||||||
|
"/myportal/representation": () => (
|
||||||
|
<>
|
||||||
|
{currentView.representationSubmit === true &&
|
||||||
|
currentView.representationSubmitConfirmation !== true &&
|
||||||
|
renderBackCrumb(onRepresentationSubmitBackFromConfirmation)}
|
||||||
|
|
||||||
|
{currentView.representationSubmit !== true &&
|
||||||
|
hasRepDetails &&
|
||||||
|
repDetails?.representationType !== "Questionnaire" &&
|
||||||
|
renderBackCrumb(onRepresentationSubmitBackToDetails)}
|
||||||
|
|
||||||
|
{currentView.representationSubmit !== true &&
|
||||||
|
hasRepDetails &&
|
||||||
|
repDetails?.representationType === "Questionnaire" &&
|
||||||
|
showQuestionnaireSection > 1 &&
|
||||||
|
renderBackCrumb(onRepresentationQuestionnaireBack)}
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
export const createCaseDetailRouteRenderers = ({
|
export const createCaseDetailRouteRenderers = ({
|
||||||
t,
|
t,
|
||||||
router,
|
router,
|
||||||
@@ -457,6 +487,13 @@ export const createMappedRouteRendererGroups = ({
|
|||||||
currentSection,
|
currentSection,
|
||||||
onStepBack,
|
onStepBack,
|
||||||
onStepBackWithInlineClass,
|
onStepBackWithInlineClass,
|
||||||
|
currentView,
|
||||||
|
hasRepDetails,
|
||||||
|
repDetails,
|
||||||
|
showQuestionnaireSection,
|
||||||
|
onRepresentationSubmitBackFromConfirmation,
|
||||||
|
onRepresentationSubmitBackToDetails,
|
||||||
|
onRepresentationQuestionnaireBack,
|
||||||
renderAnchorCrumb,
|
renderAnchorCrumb,
|
||||||
renderLinkCrumb,
|
renderLinkCrumb,
|
||||||
renderTextCrumb,
|
renderTextCrumb,
|
||||||
@@ -525,6 +562,18 @@ export const createMappedRouteRendererGroups = ({
|
|||||||
renderBackCrumb
|
renderBackCrumb
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const representationRouteRenderersByPath =
|
||||||
|
createRepresentationRouteRenderers({
|
||||||
|
currentView,
|
||||||
|
hasRepDetails,
|
||||||
|
repDetails,
|
||||||
|
showQuestionnaireSection,
|
||||||
|
onRepresentationSubmitBackFromConfirmation,
|
||||||
|
onRepresentationSubmitBackToDetails,
|
||||||
|
onRepresentationQuestionnaireBack,
|
||||||
|
renderBackCrumb
|
||||||
|
});
|
||||||
|
|
||||||
const caseDetailRouteRenderersByPath = createCaseDetailRouteRenderers({
|
const caseDetailRouteRenderersByPath = createCaseDetailRouteRenderers({
|
||||||
t,
|
t,
|
||||||
router,
|
router,
|
||||||
@@ -562,6 +611,7 @@ export const createMappedRouteRendererGroups = ({
|
|||||||
newAppealRouteRenderersByPath,
|
newAppealRouteRenderersByPath,
|
||||||
callbackRouteRenderersByPath,
|
callbackRouteRenderersByPath,
|
||||||
stepBackRouteRenderersByPath,
|
stepBackRouteRenderersByPath,
|
||||||
|
representationRouteRenderersByPath,
|
||||||
caseDetailRouteRenderersByPath,
|
caseDetailRouteRenderersByPath,
|
||||||
detailAndAccountRouteRenderersByPath
|
detailAndAccountRouteRenderersByPath
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ const buildBreadcrumbRendererMaps = ({
|
|||||||
newAppealRouteRenderersByPath,
|
newAppealRouteRenderersByPath,
|
||||||
callbackRouteRenderersByPath,
|
callbackRouteRenderersByPath,
|
||||||
stepBackRouteRenderersByPath,
|
stepBackRouteRenderersByPath,
|
||||||
|
representationRouteRenderersByPath,
|
||||||
caseDetailRouteRenderersByPath,
|
caseDetailRouteRenderersByPath,
|
||||||
detailAndAccountRouteRenderersByPath
|
detailAndAccountRouteRenderersByPath
|
||||||
}) => [
|
}) => [
|
||||||
@@ -34,6 +35,7 @@ const buildBreadcrumbRendererMaps = ({
|
|||||||
newAppealRouteRenderersByPath,
|
newAppealRouteRenderersByPath,
|
||||||
callbackRouteRenderersByPath,
|
callbackRouteRenderersByPath,
|
||||||
stepBackRouteRenderersByPath,
|
stepBackRouteRenderersByPath,
|
||||||
|
representationRouteRenderersByPath,
|
||||||
caseDetailRouteRenderersByPath,
|
caseDetailRouteRenderersByPath,
|
||||||
detailAndAccountRouteRenderersByPath
|
detailAndAccountRouteRenderersByPath
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -784,6 +784,55 @@ Follow-ups:
|
|||||||
|
|
||||||
- Next larger slice candidate remains `/myportal/representation` callback/state branch extraction only if side-effects can be injected/parity-preserved cleanly.
|
- Next larger slice candidate remains `/myportal/representation` callback/state branch extraction only if side-effects can be injected/parity-preserved cleanly.
|
||||||
|
|
||||||
|
### CL-22541-Y: breadcrumbs larger slice — representation route-group extraction (`/myportal/representation`)
|
||||||
|
|
||||||
|
date: 2026-04-09
|
||||||
|
author: Cline
|
||||||
|
scope: `lib/routing/{breadcrumbRendererFactories,breadcrumbRouteMaps}.js`, `components/breadcrumbs.js`, `tests/phase22/{breadcrumb-route-maps-helper,breadcrumbs-route-map-structure}.test.cjs`
|
||||||
|
type: change
|
||||||
|
rationale: Execute the queued larger follow-up slice by extracting `/myportal/representation` callback/state breadcrumb branches into a dedicated mapped route group with explicit callback injection while preserving questionnaire/submit side-effects.
|
||||||
|
impact: Structural refactor with preserved representation back-link state behavior; no intended route/auth/session/API/EN-CY/a11y behavior change.
|
||||||
|
status: completed
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
|
||||||
|
- Added `createRepresentationRouteRenderers(...)` in `lib/routing/breadcrumbRendererFactories.js` mapping:
|
||||||
|
- `/myportal/representation`
|
||||||
|
- Preserved existing representation-state semantics in mapped handler:
|
||||||
|
- submit/back from confirmation (`setRepresentationSubmit(qcount)`)
|
||||||
|
- non-questionnaire back path (`setRepresentationSubmit(false)`)
|
||||||
|
- questionnaire step-back path (`setShowQuestionnaireSection(showQuestionnaireSection - 1)` + `setRepresentationSubmit(false)`)
|
||||||
|
- Introduced explicit injected state/callback dependencies into grouped composition:
|
||||||
|
- `currentView`, `hasRepDetails`, `repDetails`, `showQuestionnaireSection`
|
||||||
|
- `onRepresentationSubmitBackFromConfirmation`
|
||||||
|
- `onRepresentationSubmitBackToDetails`
|
||||||
|
- `onRepresentationQuestionnaireBack`
|
||||||
|
- Extended `buildBreadcrumbRendererMaps(...)` in `lib/routing/breadcrumbRouteMaps.js` with `representationRouteRenderersByPath` and updated precedence order:
|
||||||
|
- simple -> link-text -> myportal -> new-appeal -> callback -> step-back -> representation -> case detail -> detail/account.
|
||||||
|
- Updated `components/breadcrumbs.js`:
|
||||||
|
- pass representation state/callback injections into `createMappedRouteRendererGroups(...)`
|
||||||
|
- include `representationRouteRenderersByPath` in map builder call
|
||||||
|
- remove inline `isPath("/myportal/representation")` branch block.
|
||||||
|
- Expanded tests:
|
||||||
|
- `tests/phase22/breadcrumb-route-maps-helper.test.cjs`
|
||||||
|
- updated map-count/order assertions to include representation group (9 total)
|
||||||
|
- updated map build fixtures to include `representationRouteRenderersByPath`
|
||||||
|
- `tests/phase22/breadcrumbs-route-map-structure.test.cjs`
|
||||||
|
- assert representation factory export + mapped route presence
|
||||||
|
- assert grouped destructuring includes representation map
|
||||||
|
- assert inline representation branch removal
|
||||||
|
- assert updated map-order invariant includes representation group.
|
||||||
|
|
||||||
|
Validation:
|
||||||
|
|
||||||
|
- `npx eslint lib/routing/breadcrumbRendererFactories.js lib/routing/breadcrumbRouteMaps.js components/breadcrumbs.js tests/phase22/breadcrumb-route-maps-helper.test.cjs tests/phase22/breadcrumbs-route-map-structure.test.cjs tests/phase22/index.test.cjs` -> pass.
|
||||||
|
- `node tests/phase22/index.test.cjs` -> pass (combined suite).
|
||||||
|
|
||||||
|
Follow-ups:
|
||||||
|
|
||||||
|
- Next smaller slice candidate: helper-level assertion for missing/undefined representation dependency values yielding no renderer output regressions.
|
||||||
|
- Next larger slice candidate: evaluate whether remaining `/newappeal` edge branch can be absorbed into mapped grouping without reducing readability or explicitness.
|
||||||
|
|
||||||
### CL-00X: 22500 `components/elements/index.js` Phase 1 helper extraction
|
### CL-00X: 22500 `components/elements/index.js` Phase 1 helper extraction
|
||||||
|
|
||||||
date: 2026-04-07
|
date: 2026-04-07
|
||||||
|
|||||||
@@ -66,6 +66,9 @@ test("buildBreadcrumbRendererMaps returns grouped maps in explicit precedence or
|
|||||||
const stepBackRouteRenderersByPath = {
|
const stepBackRouteRenderersByPath = {
|
||||||
"/iota": () => "iota"
|
"/iota": () => "iota"
|
||||||
};
|
};
|
||||||
|
const representationRouteRenderersByPath = {
|
||||||
|
"/kappa": () => "kappa"
|
||||||
|
};
|
||||||
const caseDetailRouteRenderersByPath = {
|
const caseDetailRouteRenderersByPath = {
|
||||||
"/delta": () => "delta"
|
"/delta": () => "delta"
|
||||||
};
|
};
|
||||||
@@ -80,12 +83,13 @@ test("buildBreadcrumbRendererMaps returns grouped maps in explicit precedence or
|
|||||||
newAppealRouteRenderersByPath,
|
newAppealRouteRenderersByPath,
|
||||||
callbackRouteRenderersByPath,
|
callbackRouteRenderersByPath,
|
||||||
stepBackRouteRenderersByPath,
|
stepBackRouteRenderersByPath,
|
||||||
|
representationRouteRenderersByPath,
|
||||||
caseDetailRouteRenderersByPath,
|
caseDetailRouteRenderersByPath,
|
||||||
detailAndAccountRouteRenderersByPath
|
detailAndAccountRouteRenderersByPath
|
||||||
});
|
});
|
||||||
|
|
||||||
assert.ok(Array.isArray(result), "Expected grouped maps array");
|
assert.ok(Array.isArray(result), "Expected grouped maps array");
|
||||||
assert.strictEqual(result.length, 8, "Expected eight grouped route maps");
|
assert.strictEqual(result.length, 9, "Expected nine grouped route maps");
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
result[0],
|
result[0],
|
||||||
simpleRouteRenderersByPath,
|
simpleRouteRenderersByPath,
|
||||||
@@ -118,13 +122,18 @@ test("buildBreadcrumbRendererMaps returns grouped maps in explicit precedence or
|
|||||||
);
|
);
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
result[6],
|
result[6],
|
||||||
caseDetailRouteRenderersByPath,
|
representationRouteRenderersByPath,
|
||||||
"Expected case detail route renderers seventh"
|
"Expected representation route renderers seventh"
|
||||||
);
|
);
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
result[7],
|
result[7],
|
||||||
|
caseDetailRouteRenderersByPath,
|
||||||
|
"Expected case detail route renderers eighth"
|
||||||
|
);
|
||||||
|
assert.strictEqual(
|
||||||
|
result[8],
|
||||||
detailAndAccountRouteRenderersByPath,
|
detailAndAccountRouteRenderersByPath,
|
||||||
"Expected detail and account route renderers eighth"
|
"Expected detail and account route renderers ninth"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -146,6 +155,7 @@ test("resolveMappedRouteRenderer returns renderer from first matching grouped ma
|
|||||||
newAppealRouteRenderersByPath: {},
|
newAppealRouteRenderersByPath: {},
|
||||||
callbackRouteRenderersByPath: {},
|
callbackRouteRenderersByPath: {},
|
||||||
stepBackRouteRenderersByPath: {},
|
stepBackRouteRenderersByPath: {},
|
||||||
|
representationRouteRenderersByPath: {},
|
||||||
caseDetailRouteRenderersByPath: {},
|
caseDetailRouteRenderersByPath: {},
|
||||||
detailAndAccountRouteRenderersByPath: {}
|
detailAndAccountRouteRenderersByPath: {}
|
||||||
});
|
});
|
||||||
@@ -175,6 +185,7 @@ test("resolveMappedRouteRenderer returns renderer from later grouped map when ea
|
|||||||
caseDetailRouteRenderersByPath: {},
|
caseDetailRouteRenderersByPath: {},
|
||||||
callbackRouteRenderersByPath: {},
|
callbackRouteRenderersByPath: {},
|
||||||
stepBackRouteRenderersByPath: {},
|
stepBackRouteRenderersByPath: {},
|
||||||
|
representationRouteRenderersByPath: {},
|
||||||
detailAndAccountRouteRenderersByPath: {
|
detailAndAccountRouteRenderersByPath: {
|
||||||
"/account/personaldetails": detailRenderer
|
"/account/personaldetails": detailRenderer
|
||||||
}
|
}
|
||||||
@@ -202,6 +213,7 @@ test("resolveMappedRouteRenderer returns null for unmapped path", () => {
|
|||||||
newAppealRouteRenderersByPath: {},
|
newAppealRouteRenderersByPath: {},
|
||||||
callbackRouteRenderersByPath: {},
|
callbackRouteRenderersByPath: {},
|
||||||
stepBackRouteRenderersByPath: {},
|
stepBackRouteRenderersByPath: {},
|
||||||
|
representationRouteRenderersByPath: {},
|
||||||
caseDetailRouteRenderersByPath: {},
|
caseDetailRouteRenderersByPath: {},
|
||||||
detailAndAccountRouteRenderersByPath: {}
|
detailAndAccountRouteRenderersByPath: {}
|
||||||
});
|
});
|
||||||
@@ -230,6 +242,7 @@ test("resolveMappedRouteRenderer returns null for empty, whitespace, and non-exa
|
|||||||
newAppealRouteRenderersByPath: {},
|
newAppealRouteRenderersByPath: {},
|
||||||
callbackRouteRenderersByPath: {},
|
callbackRouteRenderersByPath: {},
|
||||||
stepBackRouteRenderersByPath: {},
|
stepBackRouteRenderersByPath: {},
|
||||||
|
representationRouteRenderersByPath: {},
|
||||||
caseDetailRouteRenderersByPath: {},
|
caseDetailRouteRenderersByPath: {},
|
||||||
detailAndAccountRouteRenderersByPath: {}
|
detailAndAccountRouteRenderersByPath: {}
|
||||||
});
|
});
|
||||||
@@ -282,6 +295,7 @@ test("resolveMappedRouteRenderer skips invalid map entries and non-function rend
|
|||||||
newAppealRouteRenderersByPath: undefined,
|
newAppealRouteRenderersByPath: undefined,
|
||||||
callbackRouteRenderersByPath: {},
|
callbackRouteRenderersByPath: {},
|
||||||
stepBackRouteRenderersByPath: {},
|
stepBackRouteRenderersByPath: {},
|
||||||
|
representationRouteRenderersByPath: {},
|
||||||
caseDetailRouteRenderersByPath: {},
|
caseDetailRouteRenderersByPath: {},
|
||||||
detailAndAccountRouteRenderersByPath: {}
|
detailAndAccountRouteRenderersByPath: {}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -54,6 +54,12 @@ test("breadcrumbs/factory module includes expected mapped route definitions", as
|
|||||||
"Expected step-back route renderer factory export"
|
"Expected step-back route renderer factory export"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.strictEqual(
|
||||||
|
source.includes("export const createRepresentationRouteRenderers ="),
|
||||||
|
true,
|
||||||
|
"Expected representation route renderer factory export"
|
||||||
|
);
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
source.includes("export const createCaseDetailRouteRenderers ="),
|
source.includes("export const createCaseDetailRouteRenderers ="),
|
||||||
true,
|
true,
|
||||||
@@ -132,6 +138,12 @@ test("breadcrumbs/factory module includes expected mapped route definitions", as
|
|||||||
"Expected /myportal/[appealtypes] to be mapped in createStepBackRouteRenderers"
|
"Expected /myportal/[appealtypes] to be mapped in createStepBackRouteRenderers"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.strictEqual(
|
||||||
|
source.includes('"/myportal/representation": () => ('),
|
||||||
|
true,
|
||||||
|
"Expected /myportal/representation to be mapped in createRepresentationRouteRenderers"
|
||||||
|
);
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
source.includes('"/case/[ticketnumber]": () =>'),
|
source.includes('"/case/[ticketnumber]": () =>'),
|
||||||
true,
|
true,
|
||||||
@@ -221,7 +233,7 @@ test("breadcrumbs/component composes mapped routes via imported factories and sh
|
|||||||
);
|
);
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
/const\s+\{[\s\S]*simpleRouteRenderersByPath[\s\S]*newAppealRouteRenderersByPath[\s\S]*callbackRouteRenderersByPath[\s\S]*stepBackRouteRenderersByPath[\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]*representationRouteRenderersByPath[\s\S]*detailAndAccountRouteRenderersByPath[\s\S]*\}\s*=\s*createMappedRouteRendererGroups\s*\(/.test(
|
||||||
source
|
source
|
||||||
),
|
),
|
||||||
true,
|
true,
|
||||||
@@ -320,6 +332,12 @@ test("breadcrumbs/component composes mapped routes via imported factories and sh
|
|||||||
"Expected /myportal/[appealtypes] explicit branch to be removed after step-back mapping"
|
"Expected /myportal/[appealtypes] explicit branch to be removed after step-back mapping"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.strictEqual(
|
||||||
|
source.includes('isPath("/myportal/representation")'),
|
||||||
|
false,
|
||||||
|
"Expected /myportal/representation explicit branch to be removed after representation mapping"
|
||||||
|
);
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
source.includes('isPath("/myportal/case/[ticketnumber]")'),
|
source.includes('isPath("/myportal/case/[ticketnumber]")'),
|
||||||
false,
|
false,
|
||||||
@@ -405,6 +423,9 @@ test("breadcrumbs/map builder preserves route map ordering", async () => {
|
|||||||
const stepBackOrderIndex = mapBuilderSlice.indexOf(
|
const stepBackOrderIndex = mapBuilderSlice.indexOf(
|
||||||
"stepBackRouteRenderersByPath"
|
"stepBackRouteRenderersByPath"
|
||||||
);
|
);
|
||||||
|
const representationOrderIndex = mapBuilderSlice.indexOf(
|
||||||
|
"representationRouteRenderersByPath"
|
||||||
|
);
|
||||||
const caseDetailOrderIndex = mapBuilderSlice.indexOf(
|
const caseDetailOrderIndex = mapBuilderSlice.indexOf(
|
||||||
"caseDetailRouteRenderersByPath"
|
"caseDetailRouteRenderersByPath"
|
||||||
);
|
);
|
||||||
@@ -419,10 +440,11 @@ test("breadcrumbs/map builder preserves route map ordering", async () => {
|
|||||||
newAppealOrderIndex > simpleMyPortalOrderIndex &&
|
newAppealOrderIndex > simpleMyPortalOrderIndex &&
|
||||||
callbackOrderIndex > newAppealOrderIndex &&
|
callbackOrderIndex > newAppealOrderIndex &&
|
||||||
stepBackOrderIndex > callbackOrderIndex &&
|
stepBackOrderIndex > callbackOrderIndex &&
|
||||||
caseDetailOrderIndex > stepBackOrderIndex &&
|
representationOrderIndex > stepBackOrderIndex &&
|
||||||
|
caseDetailOrderIndex > representationOrderIndex &&
|
||||||
detailAndAccountOrderIndex > caseDetailOrderIndex,
|
detailAndAccountOrderIndex > caseDetailOrderIndex,
|
||||||
true,
|
true,
|
||||||
"Expected map builder call to preserve explicit route-map ordering (simple -> link-text -> myportal -> new-appeal -> callback -> step-back -> case detail -> detail/account)"
|
"Expected map builder call to preserve explicit route-map ordering (simple -> link-text -> myportal -> new-appeal -> callback -> step-back -> representation -> case detail -> detail/account)"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user