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
@@ -36,6 +36,18 @@ test("breadcrumbs/factory module includes expected mapped route definitions", as
"Expected my-portal route renderer factory export"
);
assert.strictEqual(
source.includes("export const createCaseDetailRouteRenderers ="),
true,
"Expected case detail route renderer factory export"
);
assert.strictEqual(
source.includes("export const createDetailAndAccountRouteRenderers ="),
true,
"Expected detail and account route renderer factory export"
);
assert.strictEqual(
source.includes('"/addresssearchresults": () => ('),
true,
@@ -71,6 +83,60 @@ test("breadcrumbs/factory module includes expected mapped route definitions", as
true,
"Expected /myportal/addresssearchresults to be mapped in createSimpleMyPortalRouteRenderers"
);
assert.strictEqual(
source.includes('"/case/[ticketnumber]": () =>'),
true,
"Expected /case/[ticketnumber] to be mapped in createCaseDetailRouteRenderers"
);
assert.strictEqual(
source.includes('"/myportal/case/[ticketnumber]": () =>'),
true,
"Expected /myportal/case/[ticketnumber] to be mapped in createCaseDetailRouteRenderers"
);
assert.strictEqual(
source.includes('"/myportal/dnsdetails": () =>'),
true,
"Expected /myportal/dnsdetails to be mapped in createDetailAndAccountRouteRenderers"
);
assert.strictEqual(
source.includes('"/myportal/dns/[developmentName]": () =>'),
true,
"Expected /myportal/dns/[developmentName] to be mapped in createDetailAndAccountRouteRenderers"
);
assert.strictEqual(
source.includes('"/dnsdetails": () =>'),
true,
"Expected /dnsdetails to be mapped in createDetailAndAccountRouteRenderers"
);
assert.strictEqual(
source.includes('"/dns/[developmentName]": () =>'),
true,
"Expected /dns/[developmentName] to be mapped in createDetailAndAccountRouteRenderers"
);
assert.strictEqual(
source.includes('"/dns/application-view": () =>'),
true,
"Expected /dns/application-view to be mapped in createDetailAndAccountRouteRenderers"
);
assert.strictEqual(
source.includes('"/account/personaldetails": () =>'),
true,
"Expected /account/personaldetails to be mapped in createDetailAndAccountRouteRenderers"
);
assert.strictEqual(
source.includes('"/account/changepassword": () =>'),
true,
"Expected /account/changepassword to be mapped in createDetailAndAccountRouteRenderers"
);
});
test("breadcrumbs/component composes mapped routes via imported factories and shared resolver", async () => {
@@ -106,6 +172,18 @@ test("breadcrumbs/component composes mapped routes via imported factories and sh
"Expected breadcrumbs to reference createSimpleMyPortalRouteRenderers"
);
assert.strictEqual(
/createCaseDetailRouteRenderers/.test(source),
true,
"Expected breadcrumbs to reference createCaseDetailRouteRenderers"
);
assert.strictEqual(
/createDetailAndAccountRouteRenderers/.test(source),
true,
"Expected breadcrumbs to reference createDetailAndAccountRouteRenderers"
);
assert.strictEqual(
/const\s+simpleRouteRenderersByPath\s*=\s*createSimpleRouteRenderers\s*\(/.test(
source
@@ -130,6 +208,22 @@ test("breadcrumbs/component composes mapped routes via imported factories and sh
"Expected breadcrumbs to build my-portal route renderers from factory"
);
assert.strictEqual(
/const\s+caseDetailRouteRenderersByPath\s*=\s*createCaseDetailRouteRenderers\s*\(/.test(
source
),
true,
"Expected breadcrumbs to build case detail route renderers from factory"
);
assert.strictEqual(
/const\s+detailAndAccountRouteRenderersByPath\s*=\s*createDetailAndAccountRouteRenderers\s*\(/.test(
source
),
true,
"Expected breadcrumbs to build detail and account route renderers from factory"
);
assert.strictEqual(
/const\s+mappedRouteRendererMaps\s*=\s*buildBreadcrumbRendererMaps\s*\(/.test(
source
@@ -179,6 +273,60 @@ test("breadcrumbs/component composes mapped routes via imported factories and sh
false,
"Expected /myportal/addresssearchresults explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/case/[ticketnumber]")'),
false,
"Expected /case/[ticketnumber] explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/myportal/case/[ticketnumber]")'),
false,
"Expected /myportal/case/[ticketnumber] explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/myportal/dnsdetails")'),
false,
"Expected /myportal/dnsdetails explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/myportal/dns/[developmentName]")'),
false,
"Expected /myportal/dns/[developmentName] explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/dnsdetails")'),
false,
"Expected /dnsdetails explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/dns/[developmentName]")'),
false,
"Expected /dns/[developmentName] explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/dns/application-view")'),
false,
"Expected /dns/application-view explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/account/personaldetails")'),
false,
"Expected /account/personaldetails explicit branch to be removed after mapping"
);
assert.strictEqual(
source.includes('isPath("/account/changepassword")'),
false,
"Expected /account/changepassword explicit branch to be removed after mapping"
);
});
test("breadcrumbs/map builder preserves route map ordering", async () => {
@@ -196,7 +344,7 @@ test("breadcrumbs/map builder preserves route map ordering", async () => {
const mapBuilderSlice = source.slice(
mapBuilderCallIndex,
mapBuilderCallIndex + 500
mapBuilderCallIndex + 700
);
const simpleRouteOrderIndex = mapBuilderSlice.indexOf(
@@ -208,13 +356,21 @@ test("breadcrumbs/map builder preserves route map ordering", async () => {
const simpleMyPortalOrderIndex = mapBuilderSlice.indexOf(
"simpleMyPortalRouteRenderersByPath"
);
const caseDetailOrderIndex = mapBuilderSlice.indexOf(
"caseDetailRouteRenderersByPath"
);
const detailAndAccountOrderIndex = mapBuilderSlice.indexOf(
"detailAndAccountRouteRenderersByPath"
);
assert.strictEqual(
simpleRouteOrderIndex >= 0 &&
simpleLinkTextPairOrderIndex > simpleRouteOrderIndex &&
simpleMyPortalOrderIndex > simpleLinkTextPairOrderIndex,
simpleMyPortalOrderIndex > simpleLinkTextPairOrderIndex &&
caseDetailOrderIndex > simpleMyPortalOrderIndex &&
detailAndAccountOrderIndex > caseDetailOrderIndex,
true,
"Expected map builder call to preserve explicit route-map ordering (simple -> link-text -> myportal)"
"Expected map builder call to preserve explicit route-map ordering (simple -> link-text -> myportal -> case detail -> detail/account)"
);
});