From d2256d8a057075e9edf0212a4c22ebafc12efc9a Mon Sep 17 00:00:00 2001 From: toby-plunkett Date: Thu, 2 Apr 2026 16:26:17 +0100 Subject: [PATCH 1/2] Master test --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 53ebefd17e..c0b37b847d 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,7 @@ To build the project execute the following command: ```bash ./gradlew build ``` - -### Running pcs-api with local CCD + ```bash ./gradlew bootWithCCD From 1435dbf5b692f2173f7b1c4d8cae9e99d6dfe363 Mon Sep 17 00:00:00 2001 From: toby-plunkett Date: Thu, 2 Apr 2026 17:51:18 +0100 Subject: [PATCH 2/2] Hpdi 4063 case management category b (#1623) Co-authored-by: SachinNaik --- .../gov/hmcts/reform/pcs/ccd/PCSCaseView.java | 6 +-- .../hmcts/reform/pcs/ccd/domain/PCSCase.java | 11 ++++- .../ccd/view/globalsearch/CaseFieldsView.java | 41 ++++++++++++++----- src/main/resources/application.yaml | 5 ++- .../view/globalsearch/CaseFieldsViewTest.java | 31 ++++++++++---- 5 files changed, 70 insertions(+), 24 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseView.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseView.java index 67c12b6cea..33cacfd8e6 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseView.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseView.java @@ -83,10 +83,10 @@ public PCSCase getCase(CaseViewRequest request) { boolean hasUnsubmittedCaseData = caseHasUnsubmittedData(caseReference, state); - caseFieldsView.setCaseFields(pcsCase); - setMarkdownFields(pcsCase, hasUnsubmittedCaseData); + caseFieldsView.setCaseFields(pcsCase); + //allows indexing for Global Search pcsCase.setSearchCriteria(new SearchCriteria()); @@ -109,7 +109,7 @@ private PCSCase getSubmittedCase(long caseReference) { PCSCase pcsCase = PCSCase.builder() .propertyAddress(convertAddress(pcsCaseEntity.getPropertyAddress())) .legislativeCountry(pcsCaseEntity.getLegislativeCountry()) - .caseManagementLocation(pcsCaseEntity.getCaseManagementLocation()) + .caseManagementLocationNumber(pcsCaseEntity.getCaseManagementLocation()) .allClaimants(partyMap.get(PartyRole.CLAIMANT)) .allDefendants(partyMap.get(PartyRole.DEFENDANT)) .allUnderlesseeOrMortgagees(partyMap.get(PartyRole.UNDERLESSEE_OR_MORTGAGEE)) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/PCSCase.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/PCSCase.java index 51e0ef2d04..1b980122c7 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/PCSCase.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/PCSCase.java @@ -7,6 +7,7 @@ import uk.gov.hmcts.ccd.sdk.External; import uk.gov.hmcts.ccd.sdk.api.CCD; import uk.gov.hmcts.ccd.sdk.type.AddressUK; +import uk.gov.hmcts.ccd.sdk.type.CaseLocation; import uk.gov.hmcts.ccd.sdk.type.Document; import uk.gov.hmcts.ccd.sdk.type.DynamicList; import uk.gov.hmcts.ccd.sdk.type.FieldType; @@ -126,7 +127,7 @@ public class PCSCase { @CCD( label = "Case management location" ) - private Integer caseManagementLocation; + private Integer caseManagementLocationNumber; @CCD( label = "Region Id" @@ -530,6 +531,12 @@ public class PCSCase { label = "CaseManagementLocation", access = {GlobalSearchAccess.class} ) - private String caseManagementLocationFormatted; + private CaseLocation caseManagementLocation; + + @CCD( + label = "CaseManagementCategory", + access = {GlobalSearchAccess.class} + ) + private DynamicList caseManagementCategory; } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsView.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsView.java index 57736f2ab2..b9a3a275c2 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsView.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsView.java @@ -1,17 +1,25 @@ package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; +import uk.gov.hmcts.ccd.sdk.type.CaseLocation; +import uk.gov.hmcts.ccd.sdk.type.DynamicList; +import uk.gov.hmcts.ccd.sdk.type.DynamicListElement; import uk.gov.hmcts.ccd.sdk.type.ListValue; import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.ccd.domain.Party; import uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo; +import java.util.ArrayList; import java.util.List; +import java.util.UUID; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class CaseFieldsView { + @Value("${globalsearch.caseManagementCategory}") + private String caseManagementCategory; /** * Sets case fields for the pcsCase. @@ -20,6 +28,7 @@ public class CaseFieldsView { public void setCaseFields(final PCSCase pcsCase) { setCaseNameHmctsField(pcsCase); setCaseManagementLocationField(pcsCase); + setCaseManagementCategory(pcsCase); } /** @@ -41,20 +50,34 @@ private void setCaseNameHmctsField(final PCSCase pcsCase) { pcsCase.setCaseNamePublic(formattedCaseName); } - /** - * Builds a formatted string for the case management location field based on epimsId and regionId. - * - * @param pcsCase The current case data - */ + private void setCaseManagementLocationField(final PCSCase pcsCase) { - Integer epimsId = pcsCase.getCaseManagementLocation(); + Integer epimsId = pcsCase.getCaseManagementLocationNumber(); Integer region = pcsCase.getRegionId(); if (epimsId != null && region != null) { - pcsCase.setCaseManagementLocationFormatted(getFormattedValue(region, epimsId)); + pcsCase.setCaseManagementLocation(CaseLocation.builder() + .baseLocation(String.valueOf(epimsId)) + .region(String.valueOf(region)) + .build()); } } + private void setCaseManagementCategory(PCSCase pcsCase) { + final UUID uuid = UUID.randomUUID(); + final DynamicListElement listElement = DynamicListElement.builder() + .code(uuid) + .label(caseManagementCategory) + .build(); + final List caseManagementCategoryList = new ArrayList<>(); + caseManagementCategoryList.add(listElement); + + pcsCase.setCaseManagementCategory(DynamicList.builder() + .value(listElement) + .listItems(caseManagementCategoryList) + .build()); + } + private String getFormattedClaimantName(final List> claimants) { String formattedClaimantName = null; if (claimants != null && !claimants.isEmpty()) { @@ -82,8 +105,4 @@ private String getFormattedDefendantName(final List> defendants private boolean isDefendantNameKnown(final List> defendants) { return defendants.getFirst().getValue().getNameKnown() == VerticalYesNo.YES; } - - private String getFormattedValue(int region, int epimsId) { - return "{region:%s,baseLocation:%s}".formatted(region, epimsId); - } } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index f2bdbaa71a..f52537ae5a 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -19,6 +19,9 @@ management: elasticsearch: enabled: false +globalsearch: + caseManagementCategory: Property Possession Claims + hmcts: hmctsOrgId: AAA3 @@ -196,4 +199,4 @@ payments: core_case_data: api: - url: ${CCD_DATA_STORE_URL:localhost:4452} \ No newline at end of file + url: ${CCD_DATA_STORE_URL:localhost:4452} diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsViewTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsViewTest.java index 921c66ba94..3b5b94ffd8 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsViewTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsViewTest.java @@ -1,12 +1,14 @@ package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; -import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo.NO; import static uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo.YES; +import uk.gov.hmcts.ccd.sdk.type.CaseLocation; +import uk.gov.hmcts.ccd.sdk.type.DynamicList; import uk.gov.hmcts.ccd.sdk.type.ListValue; import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.ccd.domain.Party; @@ -20,6 +22,7 @@ import org.junit.jupiter.params.provider.CsvSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.util.ReflectionTestUtils; @ExtendWith(MockitoExtension.class) class CaseFieldsViewTest { @@ -47,6 +50,7 @@ class CaseFieldsViewTest { @BeforeEach void setUp() { underTest = new CaseFieldsView(); + ReflectionTestUtils.setField(underTest, "caseManagementCategory", "Property Possession Claims"); } @@ -130,17 +134,20 @@ void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantUnkown() { } @Test - void shouldSetCaseManagementLocationFormatted() { + void shouldSetCaseManagementLocation() { //Given - when(pcsCase.getCaseManagementLocation()).thenReturn(29096); + when(pcsCase.getCaseManagementLocationNumber()).thenReturn(29096); when(pcsCase.getRegionId()).thenReturn(1); //When underTest.setCaseFields(pcsCase); // Then - verify(pcsCase).setCaseManagementLocationFormatted("{region:1,baseLocation:29096}"); + verify(pcsCase).setCaseManagementLocation(CaseLocation.builder() + .baseLocation("29096") + .region("1") + .build()); } @ParameterizedTest @@ -149,16 +156,26 @@ void shouldSetCaseManagementLocationFormatted() { "null,1", "null,null" }, nullValues = {"null"}) - void shouldNotCallSetCaseManagementLocationFormattedWhenEitherIdIsNull(Integer epimsId, Integer regionId) { + void shouldNotCallSetCaseManagementLocationWhenEitherIdIsNull(Integer epimsId, Integer regionId) { //Given - when(pcsCase.getCaseManagementLocation()).thenReturn(epimsId); + when(pcsCase.getCaseManagementLocationNumber()).thenReturn(epimsId); when(pcsCase.getRegionId()).thenReturn(regionId); //When underTest.setCaseFields(pcsCase); // Then - verify(pcsCase, never()).setCaseManagementLocationFormatted(anyString()); + verify(pcsCase, never()).setCaseManagementLocation(any(CaseLocation.class)); + } + + @Test + void shouldSetCaseManagementCategory() { + + //When + underTest.setCaseFields(pcsCase); + + // Then + verify(pcsCase).setCaseManagementCategory(any(DynamicList.class)); } }