From eda7cff61a5b6639cbe1266013093ec410897e0b Mon Sep 17 00:00:00 2001 From: renjithabby Date: Mon, 3 Aug 2026 13:09:44 +0100 Subject: [PATCH 1/3] adding default resgistering unit for sensitive case from homeunit --- .../case-details-page/index.tsx | 3 ++- .../components/case-registration/index.tsx | 24 +++++++++++++++---- .../data/caseAreasAndRegisteringUnits.dev.ts | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/ui-spa/src/components/case-registration/case-details-page/index.tsx b/src/ui-spa/src/components/case-registration/case-details-page/index.tsx index 655f72681..056a4b729 100644 --- a/src/ui-spa/src/components/case-registration/case-details-page/index.tsx +++ b/src/ui-spa/src/components/case-registration/case-details-page/index.tsx @@ -345,7 +345,8 @@ const CaseDetailsPage = () => { ) as HTMLInputElement | null; const registeringUnitInputValue = registeringUnitInput?.value ?? ""; if ( - formData.registeringUnitText?.description !== registeringUnitInputValue + formData.registeringUnitText?.description !== registeringUnitInputValue && + !isAreaSensitive ) { const { id, description } = getSelectedUnit( registeringUnits, diff --git a/src/ui-spa/src/components/case-registration/index.tsx b/src/ui-spa/src/components/case-registration/index.tsx index ef4d74175..e0c6ab1c7 100644 --- a/src/ui-spa/src/components/case-registration/index.tsx +++ b/src/ui-spa/src/components/case-registration/index.tsx @@ -182,15 +182,31 @@ const CaseRegistrationPage = () => { }, }); + let defaultPayload: { + areaOrDivisionText: { id: number; description: string }; + registeringUnitText?: { id: number; description: string }; + } = { + areaOrDivisionText: { + id: areasData.homeUnit.areaId, + description: areasData.homeUnit.areaDescription, + }, + }; + if (areasData?.homeUnit?.areaIsSensitive) { + defaultPayload = { + ...defaultPayload, + registeringUnitText: { + id: areasData.homeUnit.id, + description: areasData.homeUnit.description, + }, + }; + } + if (!state.formData.areaOrDivisionText.id && areasData?.homeUnit) { dispatch({ type: "SET_FIELDS", payload: { data: { - areaOrDivisionText: { - id: areasData.homeUnit.areaId, - description: areasData.homeUnit.areaDescription, - }, + ...defaultPayload, }, }, }); diff --git a/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.dev.ts b/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.dev.ts index d1a5299ee..25c36061b 100644 --- a/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.dev.ts +++ b/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.dev.ts @@ -1985,7 +1985,7 @@ export const caseAreasAndRegisteringUnitsDev = { homeUnit: { areaId: 1008, areaDescription: "CAMBRIDGESHIRE", - areaIsSensitive: false, + areaIsSensitive: true, id: 2033, description: "SOUTHERN CJU (Cambridge)", }, From 4f4a3dde6cd74adaf5f4e2c5fb254a7b655d1d00 Mon Sep 17 00:00:00 2001 From: renjithabby Date: Mon, 3 Aug 2026 14:46:20 +0100 Subject: [PATCH 2/3] removed actions links for case area and registering unit for sensitive cms --- .../case-summary-page/index.tsx | 11 +++- .../utils/getSummaryListRows.test.tsx | 46 +++++++++++++++ .../utils/getSummaryListRows.tsx | 57 ++++++++++--------- 3 files changed, 86 insertions(+), 28 deletions(-) diff --git a/src/ui-spa/src/components/case-registration/case-summary-page/index.tsx b/src/ui-spa/src/components/case-registration/case-summary-page/index.tsx index a80c6e3eb..3561a9144 100644 --- a/src/ui-spa/src/components/case-registration/case-summary-page/index.tsx +++ b/src/ui-spa/src/components/case-registration/case-summary-page/index.tsx @@ -23,6 +23,7 @@ import { getPoliceUnit } from "../../../common/utils/getPoliceUnit"; import SuspectSummary from "../suspect-summary/SuspectSummary"; import { useNavigate } from "react-router-dom"; import PageContentWrapper from "../../common/PageContentWrapper"; +import { useIsAreaSensitive } from "../../../common/hooks/useIsAreaSensitive"; import styles from "./index.module.scss"; const CaseSummaryPage = () => { @@ -39,6 +40,7 @@ const CaseSummaryPage = () => { const { state, dispatch } = useContext(CaseRegistrationFormContext); const navigate = useNavigate(); const { chargesCount } = useChargesCount(state.formData.suspects); + const isAreaSensitive = useIsAreaSensitive(); const submitCaseRegistrationMutation = useMutation({ mutationFn: submitCaseRegistration, @@ -171,8 +173,15 @@ const CaseSummaryPage = () => { navigate, state.formData, disableSummaryActions, + !!isAreaSensitive, ), - [dispatch, navigate, state.formData, disableSummaryActions], + [ + dispatch, + navigate, + state.formData, + disableSummaryActions, + isAreaSensitive, + ], ); const caseFirstHearingSummaryListRows = useMemo( diff --git a/src/ui-spa/src/components/case-registration/case-summary-page/utils/getSummaryListRows.test.tsx b/src/ui-spa/src/components/case-registration/case-summary-page/utils/getSummaryListRows.test.tsx index 283970b14..f2787f658 100644 --- a/src/ui-spa/src/components/case-registration/case-summary-page/utils/getSummaryListRows.test.tsx +++ b/src/ui-spa/src/components/case-registration/case-summary-page/utils/getSummaryListRows.test.tsx @@ -128,6 +128,7 @@ describe("getCaseDetailsSummaryListRows", () => { navigate, modifiedFormData, false, + false, ); const expectedValues = [ @@ -200,6 +201,7 @@ describe("getCaseDetailsSummaryListRows", () => { navigate, modifiedFormData, false, + false, ); const expectedValues = [ @@ -254,11 +256,55 @@ describe("getCaseDetailsSummaryListRows", () => { navigate, formData, true, + false, ); for (const r of rows) { expect(r.actions?.items).toEqual([]); } }); + it("Should return correct row values for the sensitive cases, it should not show the change links for area and registering units (empty actions)", () => { + const dispatch = vi.fn(); + const navigate = vi.fn(); + + const caseDetailsValue = { + operationNameRadio: "yes", + suspectDetailsRadio: "yes", + operationNameText: "op_1", + areaOrDivisionText: { id: 1, description: "area_1" }, + urnPoliceForceText: "11", + urnPoliceUnitText: "12", + urnUniqueReferenceText: "0001", + urnYearReferenceText: "26", + registeringUnitText: { id: 2, description: "ru_1" }, + witnessCareUnitText: { id: 3, description: "wcu_1" }, + suspects: [ + { id: 1, name: "Suspect 1" }, + { id: 2, name: "Suspect 2" }, + ] as unknown, + }; + + const modifiedFormData = { + ...formData, + ...caseDetailsValue, + } as CaseRegistrationFormData; + + const rows = getCaseDetailsSummaryListRows( + dispatch, + navigate, + modifiedFormData, + false, + true, + ); + + expect(rows.length).toBeGreaterThanOrEqual(6); + expect(rows[0].key.children).toEqual(Area); + expect(rows[0].value.children).toEqual(area_1); + expect(rows[0].actions?.items).toEqual([]); + + expect(rows[2].key.children).toEqual(Registering unit); + expect(rows[2].value.children).toEqual(ru_1); + expect(rows[2].actions?.items).toEqual([]); + }); }); describe("getFirstHearingSummaryRows", () => { it("renders first hearing date and court location with change actions", () => { diff --git a/src/ui-spa/src/components/case-registration/case-summary-page/utils/getSummaryListRows.tsx b/src/ui-spa/src/components/case-registration/case-summary-page/utils/getSummaryListRows.tsx index f06f581b3..c358b3448 100644 --- a/src/ui-spa/src/components/case-registration/case-summary-page/utils/getSummaryListRows.tsx +++ b/src/ui-spa/src/components/case-registration/case-summary-page/utils/getSummaryListRows.tsx @@ -12,6 +12,7 @@ export const getCaseDetailsSummaryListRows = ( navigate: NavigateFunction, formData: CaseRegistrationFormData, hideActions: boolean, + isAreaSensitive: boolean, ) => { const handleAddChangeClick = ( event: React.MouseEvent, @@ -56,18 +57,19 @@ export const getCaseDetailsSummaryListRows = ( children: {formData.areaOrDivisionText?.description}, }, actions: { - items: hideActions - ? [] - : [ - { - "data-testid": "change-area-link", - children: Change, - to: "/case-registration/areas", - visuallyHiddenText: "Case Area", - onClick: (event: React.MouseEvent) => - handleAddChangeClick(event, "/case-registration/areas"), - }, - ], + items: + hideActions || isAreaSensitive + ? [] + : [ + { + "data-testid": "change-area-link", + children: Change, + to: "/case-registration/areas", + visuallyHiddenText: "Case Area", + onClick: (event: React.MouseEvent) => + handleAddChangeClick(event, "/case-registration/areas"), + }, + ], }, }, @@ -101,21 +103,22 @@ export const getCaseDetailsSummaryListRows = ( children: {formData.registeringUnitText?.description}, }, actions: { - items: hideActions - ? [] - : [ - { - "data-testid": "change-registering-unit-link", - children: Change, - to: "/case-registration/case-details", - visuallyHiddenText: "Registering Unit", - onClick: (event: React.MouseEvent) => - handleAddChangeClick( - event, - "/case-registration/case-details", - ), - }, - ], + items: + hideActions || isAreaSensitive + ? [] + : [ + { + "data-testid": "change-registering-unit-link", + children: Change, + to: "/case-registration/case-details", + visuallyHiddenText: "Registering Unit", + onClick: (event: React.MouseEvent) => + handleAddChangeClick( + event, + "/case-registration/case-details", + ), + }, + ], }, }, { From 435116164ab1cd341626405a33e0c4e5a6051b51 Mon Sep 17 00:00:00 2001 From: renjithabby Date: Mon, 3 Aug 2026 18:04:56 +0100 Subject: [PATCH 3/3] added ui integration test for sensitive case non suspect journey --- .../pages/caseDetailsPage.ts | 62 +++--- .../pages/caseRegistrationSummaryPage.ts | 72 ++++--- ...ensitive-case-non-suspect-journery.spec.ts | 201 ++++++++++++++++++ .../data/caseAreasAndRegisteringUnits.dev.ts | 2 +- ...caseAreasAndRegisteringUnits.playwright.ts | 11 + 5 files changed, 297 insertions(+), 51 deletions(-) create mode 100644 src/ui-spa/integration-tests/sensitive-case-non-suspect-journery.spec.ts diff --git a/src/ui-spa/integration-tests/pages/caseDetailsPage.ts b/src/ui-spa/integration-tests/pages/caseDetailsPage.ts index e72e01c98..cdfaef5b8 100644 --- a/src/ui-spa/integration-tests/pages/caseDetailsPage.ts +++ b/src/ui-spa/integration-tests/pages/caseDetailsPage.ts @@ -13,7 +13,7 @@ export class CaseDetailsPage { await expect(this.page).toHaveURL(this.route); } - async verifyPageElements() { + async verifyPageElements(isCaseSensitive: boolean = false) { await expect(this.page).toHaveTitle(/Case Details - Register A Case/); await expect(this.page.locator("h1")).toHaveText("Case details"); await expect(this.page.locator("legend").first()).toHaveText( @@ -27,19 +27,26 @@ export class CaseDetailsPage { await expect(this.page.locator("label").nth(3)).toHaveText( "Year reference", ); - await expect(this.page.locator("label").nth(4)).toHaveText( - "What is the registering unit?", - ); - await expect(this.page.locator("label").nth(5)).toHaveText( - "What is the witness care unit (WCU)?", - ); + + if (!isCaseSensitive) { + await expect(this.page.locator("label").nth(4)).toHaveText( + "What is the registering unit?", + ); + await expect(this.page.locator("label").nth(5)).toHaveText( + "What is the witness care unit (WCU)?", + ); + } else { + await expect(this.page.locator("label").nth(4)).toHaveText( + "What is the witness care unit (WCU)?", + ); + } await expect(this.page.getByTestId("urn-year-reference-text")).toHaveValue( "26", ); await this.verifyCancelLink(); } - async errorValidations() { + async errorValidations(isCaseSensitive: boolean = false) { await this.enterUrnYearReference(""); await this.verifyErrorSummaryClear(); this.saveAndContinue(); @@ -51,12 +58,14 @@ export class CaseDetailsPage { await expect(this.page.getByTestId("urn-error-text-link")).toHaveText( "Enter the URN", ); - await expect( - this.page.getByTestId("registering-unit-error-text-link"), - ).toBeVisible(); - await expect( - this.page.getByTestId("registering-unit-error-text-link"), - ).toHaveText("Select the registering unit"); + if (!isCaseSensitive) { + await expect( + this.page.getByTestId("registering-unit-error-text-link"), + ).toBeVisible(); + await expect( + this.page.getByTestId("registering-unit-error-text-link"), + ).toHaveText("Select the registering unit"); + } await expect( this.page.getByTestId("witness-care-unit-error-text-link"), ).toBeVisible(); @@ -87,17 +96,20 @@ export class CaseDetailsPage { await expect( this.page.getByTestId("urn-error-text-link"), ).not.toBeVisible(); - - await this.page.getByTestId("registering-unit-error-text-link").click(); - await expect(this.page.locator("#registering-unit-text")).toBeFocused(); - await this.enterRegisteringUnit("abc"); - await this.page.getByRole("button", { name: "Save and continue" }).click(); - await expect( - this.page.getByTestId("registering-unit-error-text-link"), - ).toHaveText("Select a valid registering unit"); - await this.page.getByTestId("registering-unit-error-text-link").click(); - await expect(this.page.locator("#registering-unit-text")).toBeFocused(); - await this.enterRegisteringUnit("NORTHERN CJU (Peterborough)"); + if (!isCaseSensitive) { + await this.page.getByTestId("registering-unit-error-text-link").click(); + await expect(this.page.locator("#registering-unit-text")).toBeFocused(); + await this.enterRegisteringUnit("abc"); + await this.page + .getByRole("button", { name: "Save and continue" }) + .click(); + await expect( + this.page.getByTestId("registering-unit-error-text-link"), + ).toHaveText("Select a valid registering unit"); + await this.page.getByTestId("registering-unit-error-text-link").click(); + await expect(this.page.locator("#registering-unit-text")).toBeFocused(); + await this.enterRegisteringUnit("NORTHERN CJU (Peterborough)"); + } await this.page.getByRole("button", { name: "Save and continue" }).click(); await expect( this.page.getByTestId("registering-unit-error-text-link"), diff --git a/src/ui-spa/integration-tests/pages/caseRegistrationSummaryPage.ts b/src/ui-spa/integration-tests/pages/caseRegistrationSummaryPage.ts index b6a5145d6..b45b8085f 100644 --- a/src/ui-spa/integration-tests/pages/caseRegistrationSummaryPage.ts +++ b/src/ui-spa/integration-tests/pages/caseRegistrationSummaryPage.ts @@ -49,13 +49,16 @@ export class CaseRegistrationSummaryPage { await this.verifyCancelLink(); } - async verifyCaseDetailsElements(values: { - area: string; - urn: string; - registeringUnit: string; - wcu: string; - operationName: string; - }) { + async verifyCaseDetailsElements( + values: { + area: string; + urn: string; + registeringUnit: string; + wcu: string; + operationName: string; + }, + isCaseSensitive: boolean = false, + ) { const caseDetailWrapperElement = this.page.getByTestId( "case-details-summary", ); @@ -65,15 +68,24 @@ export class CaseRegistrationSummaryPage { const rows = caseDetailWrapperElement.locator(".govuk-summary-list__row"); await expect(rows.nth(0).locator("dt").nth(0)).toHaveText("Area"); await expect(rows.nth(0).locator("dd").nth(0)).toHaveText(values.area); - const areaChangeLink = rows - .nth(0) - .locator("dd") - .nth(1) - .getByRole("link", { name: "Change" }); - await expect(areaChangeLink).toHaveAttribute( - "href", - "/case-registration/areas", - ); + if (isCaseSensitive) { + const actions = rows + .nth(0) + .locator("dd") + .nth(1) + .getByRole("link", { name: "Change" }); + expect(actions).toHaveCount(0); + } else { + const areaChangeLink = rows + .nth(0) + .locator("dd") + .nth(1) + .getByRole("link", { name: "Change" }); + await expect(areaChangeLink).toHaveAttribute( + "href", + "/case-registration/areas", + ); + } await expect(rows.nth(1).locator("dt").nth(0)).toHaveText("URN"); await expect(rows.nth(1).locator("dd").nth(0)).toHaveText(values.urn); @@ -93,15 +105,25 @@ export class CaseRegistrationSummaryPage { await expect(rows.nth(2).locator("dd").nth(0)).toHaveText( values.registeringUnit, ); - const registeringUnitChangeLink = rows - .nth(2) - .locator("dd") - .nth(1) - .getByRole("link", { name: "Change" }); - await expect(registeringUnitChangeLink).toHaveAttribute( - "href", - "/case-registration/case-details", - ); + + if (isCaseSensitive) { + const actions = rows + .nth(0) + .locator("dd") + .nth(1) + .getByRole("link", { name: "Change" }); + expect(actions).toHaveCount(0); + } else { + const registeringUnitChangeLink = rows + .nth(2) + .locator("dd") + .nth(1) + .getByRole("link", { name: "Change" }); + await expect(registeringUnitChangeLink).toHaveAttribute( + "href", + "/case-registration/case-details", + ); + } await expect(rows.nth(3).locator("dt").nth(0)).toHaveText("WCU"); await expect(rows.nth(3).locator("dd").nth(0)).toHaveText(values.wcu); diff --git a/src/ui-spa/integration-tests/sensitive-case-non-suspect-journery.spec.ts b/src/ui-spa/integration-tests/sensitive-case-non-suspect-journery.spec.ts new file mode 100644 index 000000000..83b78bc71 --- /dev/null +++ b/src/ui-spa/integration-tests/sensitive-case-non-suspect-journery.spec.ts @@ -0,0 +1,201 @@ +import { delay, HttpResponse, http } from "msw"; +import { expect, test } from "./utils/test"; +import { CaseRegistrationHomePage } from "./pages/caseRegistrationHomePage"; +import { CaseDetailsPage } from "./pages/caseDetailsPage"; +import { CaseMonitoringPage } from "./pages/caseMonitoringPage"; +import { CaseAssigneePage } from "./pages/caseAssigneePage"; +import { CaseRegistrationSummaryPage } from "./pages/caseRegistrationSummaryPage"; +import { CaseComplexityPage } from "./pages/caseComplexityPage"; +import { CaseRegistrationConfirmationPage } from "./pages/caseRegistrationConfirmationPage"; +import { caseAreasAndRegisteringUnitsSensitiveCasePlaywright } from "../src/mocks/data/caseAreasAndRegisteringUnits.playwright"; + +test("Should successfully complete a sensitive case non suspect journey", async ({ + page, + worker, +}) => { + await worker.use( + http.get("https://mocked-out-api/api/v1/units", async () => { + await delay(100); + return HttpResponse.json( + caseAreasAndRegisteringUnitsSensitiveCasePlaywright, + ); + }), + ); + await page.goto("http://localhost:5173"); + const caseRegistrationHomePage = new CaseRegistrationHomePage(page); + await caseRegistrationHomePage.verifyUrl(); + await caseRegistrationHomePage.verifyPageElements(); + await caseRegistrationHomePage.errorValidations(); + await caseRegistrationHomePage.addOperationName("thunderstruck"); + await caseRegistrationHomePage.addNoSuspect(); + await caseRegistrationHomePage.saveAndContinue(); + await caseRegistrationHomePage.verifyErrorSummaryClear(); + + const caseDetailsPage = new CaseDetailsPage(page); + await caseDetailsPage.verifyUrl(); + + await caseDetailsPage.verifyBackLink("/case-registration"); + await caseDetailsPage.backLinkClick(); + await caseRegistrationHomePage.verifyUrl(); + await caseRegistrationHomePage.saveAndContinue(); + await delay(500); + await caseDetailsPage.verifyUrl(); + await caseDetailsPage.verifyPageElements(true); + await caseDetailsPage.errorValidations(true); + await caseDetailsPage.enterUrnPoliceForce("12"); + await caseDetailsPage.enterUrnPoliceUnit("21"); + await caseDetailsPage.enterUrnUniqueReference("12345"); + await caseDetailsPage.enterUrnYearReference("26"); + await caseDetailsPage.enterWitnessCareUnit( + "Cambridgeshire Non Operational WCU", + ); + await caseDetailsPage.saveAndContinue(); + await caseDetailsPage.verifyErrorSummaryClear(); + + const caseMonitoringPage = new CaseMonitoringPage(page); + await caseMonitoringPage.verifyUrl(); + await caseMonitoringPage.verifyBackLink("/case-registration/case-details"); + await caseMonitoringPage.backLinkClick(); + await caseDetailsPage.verifyUrl(); + await caseDetailsPage.saveAndContinue(); + await caseMonitoringPage.verifyUrl(); + await caseMonitoringPage.verifyPageElements(45); + await caseMonitoringPage.verifyPreChargeCheckboxChecked(); + await caseMonitoringPage.selectMonitoringCode("Asset Recovery"); + await caseMonitoringPage.saveAndContinue(); + await caseMonitoringPage.verifyErrorSummaryClear(); + + const caseAssigneePage = new CaseAssigneePage(page); + await caseAssigneePage.verifyUrl(); + await caseAssigneePage.verifyBackLink( + "/case-registration/case-monitoring-codes", + ); + await caseAssigneePage.backLinkClick(); + await caseMonitoringPage.verifyUrl(); + await caseMonitoringPage.saveAndContinue(); + await caseAssigneePage.verifyUrl(); + await caseAssigneePage.verifyPageElements(); + await caseAssigneePage.errorValidations(); + await caseAssigneePage.addProsecutorYes(); + await caseAssigneePage.addInvestigatorYes(); + await caseAssigneePage.enterProsecutorName("Prosecutor A"); + await caseAssigneePage.enterCaseworkerName("Caseworker A"); + await caseAssigneePage.addInvestigatorFirstName("Investigator F"); + await caseAssigneePage.addInvestigatorLastName("Investigator L"); + await caseAssigneePage.addInvestigatorShoulderNumber("12345"); + await caseAssigneePage.saveAndContinue(); + await expect(page).toHaveURL( + "http://localhost:5173/case-registration/case-summary", + ); + + const caseRegistrationSummaryPage = new CaseRegistrationSummaryPage(page); + await caseRegistrationSummaryPage.verifyUrl(); + await caseRegistrationSummaryPage.verifyBackLink( + "/case-registration/case-assignee", + ); + await caseRegistrationSummaryPage.backLinkClick(); + await caseAssigneePage.verifyUrl(); + await caseAssigneePage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + await caseRegistrationSummaryPage.verifyPageElements(); + await caseRegistrationSummaryPage.verifyCaseDetailsElements( + { + area: "CAMBRIDGESHIRE", + urn: "12211234526", + registeringUnit: "SOUTHERN CJU (Cambridge)", + wcu: "Cambridgeshire Non Operational WCU", + operationName: "thunderstruck", + }, + true, + ); + await caseRegistrationSummaryPage.verifyComplexityAndMonitoringCodesElements({ + complexity: "Basic", + monitoringCodes: ["Asset Recovery", "Pre-Charge Decision"], + }); + await caseRegistrationSummaryPage.verifyWorkingOnTheCaseElements({ + prosecutor: "Prosecutor A", + caseworker: "Caseworker A", + investigator: "InvestigatorL, InvestigatorF", + shoulderNumber: "12345", + policeUnit: "Not entered", + }); + + await caseRegistrationSummaryPage.changeOperationNameLinkClick(); + await caseRegistrationHomePage.verifyUrl(); + await caseRegistrationHomePage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + + await caseRegistrationSummaryPage.changeUrnLinkClick(); + await caseDetailsPage.verifyUrl(); + await caseDetailsPage.verifyBackLink("/case-registration/case-summary"); + await caseDetailsPage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + + await caseRegistrationSummaryPage.changeWcuLinkClick(); + await caseDetailsPage.verifyUrl(); + await caseDetailsPage.verifyBackLink("/case-registration/case-summary"); + await caseDetailsPage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + + await caseRegistrationSummaryPage.changeMonitoringCodesLinkClick(); + await caseMonitoringPage.verifyUrl(); + await caseMonitoringPage.verifyBackLink("/case-registration/case-summary"); + await caseMonitoringPage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + + const caseComplexityPage = new CaseComplexityPage(page); + await caseRegistrationSummaryPage.changeCaseComplexityLinkClick(); + await caseComplexityPage.verifyUrl(); + await caseComplexityPage.verifyBackLink("/case-registration/case-summary"); + await caseComplexityPage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + + await caseRegistrationSummaryPage.changeCaseInvestigatorLinkClick(); + await caseAssigneePage.verifyUrl(); + await caseAssigneePage.verifyBackLink("/case-registration/case-summary"); + await caseAssigneePage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + + await caseRegistrationSummaryPage.changeShoulderNumberLinkClick(); + await caseAssigneePage.verifyUrl(); + await caseAssigneePage.verifyBackLink("/case-registration/case-summary"); + await caseAssigneePage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + + await caseRegistrationSummaryPage.changeProsecutorLinkClick(); + await caseAssigneePage.verifyUrl(); + await caseAssigneePage.verifyBackLink("/case-registration/case-summary"); + await caseAssigneePage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + + await caseRegistrationSummaryPage.changeCaseworkerLinkClick(); + await caseAssigneePage.verifyUrl(); + await caseAssigneePage.verifyBackLink("/case-registration/case-summary"); + await caseAssigneePage.saveAndContinue(); + await caseRegistrationSummaryPage.verifyUrl(); + + await worker.use( + http.get("https://mocked-out-api/api/v1/urns/:urn/exists", async () => { + await delay(2000); + return HttpResponse.json(true); + }), + ); + await caseRegistrationSummaryPage.clickCreateCaseButton(); + await caseRegistrationSummaryPage.verifyFormSubmittingStatus(); + await caseRegistrationSummaryPage.verifyUrl(); + await caseRegistrationSummaryPage.errorValidations(); + await caseRegistrationSummaryPage.verifyFormNonSubmittingStatus(); + await worker.use( + http.get("https://mocked-out-api/api/v1/urns/:urn/exists", async () => { + await delay(100); + return HttpResponse.json(false); + }), + ); + await caseRegistrationSummaryPage.clickCreateCaseButton(); + await caseRegistrationSummaryPage.verifyErrorSummaryCleared(); + const caseRegistrationConfirmationPage = new CaseRegistrationConfirmationPage( + page, + ); + await caseRegistrationConfirmationPage.verifyUrl(); + await caseRegistrationConfirmationPage.verifyPageElements("12211234526"); +}); diff --git a/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.dev.ts b/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.dev.ts index 25c36061b..d1a5299ee 100644 --- a/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.dev.ts +++ b/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.dev.ts @@ -1985,7 +1985,7 @@ export const caseAreasAndRegisteringUnitsDev = { homeUnit: { areaId: 1008, areaDescription: "CAMBRIDGESHIRE", - areaIsSensitive: true, + areaIsSensitive: false, id: 2033, description: "SOUTHERN CJU (Cambridge)", }, diff --git a/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.playwright.ts b/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.playwright.ts index d5f468155..fc1d28a88 100644 --- a/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.playwright.ts +++ b/src/ui-spa/src/mocks/data/caseAreasAndRegisteringUnits.playwright.ts @@ -86,3 +86,14 @@ export const caseAreasAndRegisteringUnitsPlaywright = { description: "SOUTHERN CJU (Cambridge)", }, }; + +export const caseAreasAndRegisteringUnitsSensitiveCasePlaywright = { + ...caseAreasAndRegisteringUnitsPlaywright, + homeUnit: { + areaId: 1008, + areaDescription: "CAMBRIDGESHIRE", + areaIsSensitive: true, + id: 2033, + description: "SOUTHERN CJU (Cambridge)", + }, +};