From 8bc8c623a7a50362d24ddb8ba7b3b2a0fdfcb4f0 Mon Sep 17 00:00:00 2001 From: SachinNaik Date: Tue, 24 Mar 2026 21:15:55 +0000 Subject: [PATCH 1/8] HDPI-4054 Adding caseManagementLocation as top level field --- .../gov/hmcts/reform/pcs/ccd/PCSCaseView.java | 9 +++-- .../hmcts/reform/pcs/ccd/domain/PCSCase.java | 11 +++++ .../CaseManagementLocationView.java | 34 ++++++++++++++++ .../globalsearch/CaseNameHmctsView.java} | 33 +++++++-------- .../hmcts/reform/pcs/ccd/PCSCaseViewTest.java | 24 ++++++++--- .../CaseManagementLocationViewTest.java | 40 +++++++++++++++++++ .../globalsearch/CaseNameHmctsViewTest.java} | 17 +++----- 7 files changed, 130 insertions(+), 38 deletions(-) create mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationView.java rename src/main/java/uk/gov/hmcts/reform/pcs/ccd/{service/globalsearch/CaseNameHmctsFormatter.java => view/globalsearch/CaseNameHmctsView.java} (61%) create mode 100644 src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationViewTest.java rename src/test/java/uk/gov/hmcts/reform/pcs/ccd/{service/globalsearch/CaseNameHmctsFormatterTest.java => view/globalsearch/CaseNameHmctsViewTest.java} (85%) 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 bf3d8e6bbc..86d18fd04e 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 @@ -22,7 +22,6 @@ import uk.gov.hmcts.reform.pcs.ccd.repository.PcsCaseRepository; import uk.gov.hmcts.reform.pcs.ccd.service.CaseTitleService; import uk.gov.hmcts.reform.pcs.ccd.service.DraftCaseDataService; -import uk.gov.hmcts.reform.pcs.ccd.service.globalsearch.CaseNameHmctsFormatter; import uk.gov.hmcts.reform.pcs.ccd.util.ListValueUtils; import uk.gov.hmcts.reform.pcs.ccd.view.AlternativesToPossessionView; import uk.gov.hmcts.reform.pcs.ccd.view.AsbProhibitedConductView; @@ -34,6 +33,8 @@ import uk.gov.hmcts.reform.pcs.ccd.view.RentDetailsView; import uk.gov.hmcts.reform.pcs.ccd.view.StatementOfTruthView; import uk.gov.hmcts.reform.pcs.ccd.view.TenancyLicenceView; +import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseManagementLocationView; +import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseNameHmctsView; import uk.gov.hmcts.reform.pcs.exception.CaseNotFoundException; import uk.gov.hmcts.reform.pcs.security.SecurityContextService; @@ -68,7 +69,8 @@ public class PCSCaseView implements CaseView { private final RentArrearsView rentArrearsView; private final NoticeOfPossessionView noticeOfPossessionView; private final StatementOfTruthView statementOfTruthView; - private final CaseNameHmctsFormatter caseNameHmctsFormatter; + private final CaseNameHmctsView caseNameHmctsView; + private final CaseManagementLocationView caseManagementLocationView; /** @@ -83,7 +85,8 @@ public PCSCase getCase(CaseViewRequest request) { boolean hasUnsubmittedCaseData = caseHasUnsubmittedData(caseReference, state); - caseNameHmctsFormatter.setCaseNameHmctsField(pcsCase); + caseNameHmctsView.setCaseNameHmctsField(pcsCase); + caseManagementLocationView.setCaseManagementLocationField(pcsCase); setMarkdownFields(pcsCase, hasUnsubmittedCaseData); 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 bcf12830fc..51e0ef2d04 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 @@ -128,6 +128,11 @@ public class PCSCase { ) private Integer caseManagementLocation; + @CCD( + label = "Region Id" + ) + private Integer regionId; + @CCD(label = "Party") private List> parties; @@ -521,4 +526,10 @@ public class PCSCase { ) private String caseNamePublic; + @CCD( + label = "CaseManagementLocation", + access = {GlobalSearchAccess.class} + ) + private String caseManagementLocationFormatted; + } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationView.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationView.java new file mode 100644 index 0000000000..819957dad4 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationView.java @@ -0,0 +1,34 @@ +package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; + +import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@AllArgsConstructor +@Slf4j +public class CaseManagementLocationView { + + + /** + * Builds a formatted string for the case management location field + * based on epimsId and regionId. + * + * @param pcsCase The current case data + */ + public void setCaseManagementLocationField(final PCSCase pcsCase) { + final Integer epimsId = pcsCase.getCaseManagementLocation(); + final Integer region = pcsCase.getRegionId(); + + if (epimsId != null && region != null) { + pcsCase.setCaseManagementLocationFormatted(getFormattedValue(region, epimsId)); + } + } + + + private String getFormattedValue(final Integer region, final Integer epimsId) { + return String.format("{region:%s,baseLocation:%s}", region, epimsId); + } +} diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/globalsearch/CaseNameHmctsFormatter.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java similarity index 61% rename from src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/globalsearch/CaseNameHmctsFormatter.java rename to src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java index f554dd7189..7c09a50f23 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/globalsearch/CaseNameHmctsFormatter.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java @@ -1,22 +1,21 @@ -package uk.gov.hmcts.reform.pcs.ccd.service.globalsearch; +package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; 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.List; import lombok.AllArgsConstructor; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; -@Service +@Component @AllArgsConstructor -public class CaseNameHmctsFormatter { +public class CaseNameHmctsView { /** * Builds a formatted string for the case name hmcts field based on - * certain rules and set's the internal, restricted and public field accordingly. + * certain rules and sets the internal, restricted and public field accordingly. * * @param pcsCase The current case data */ @@ -37,22 +36,24 @@ private String getFormattedClaimantName(final List> claimants) StringBuilder formattedClaimantName = new StringBuilder(); if (claimants != null && !claimants.isEmpty()) { formattedClaimantName.append(claimants.stream() - .findFirst() - .map(claimant -> - claimant.getValue().getOrgName() != null - ? claimant.getValue().getOrgName() : - claimant.getValue().getLastName()) - .orElse(null)); + .findFirst() + .map(ListValue::getValue) + .map(claimant -> + claimant.getOrgName() != null + ? claimant.getOrgName() : + claimant.getLastName()) + .orElse(null)); } return formattedClaimantName.toString(); } private String getFormattedDefendantName(final List> defendants) { StringBuilder formattedDefendantName = new StringBuilder(); - if (defendants != null && !defendants.isEmpty() && isDefendantNameKnown(defendants)) { + if (defendants != null && !defendants.isEmpty()) { formattedDefendantName.append(defendants.stream() .findFirst() - .map(defendant -> defendant.getValue().getLastName()) + .map(ListValue::getValue) + .map(Party::getLastName) .orElse(null)); if (defendants.size() > 1) { formattedDefendantName.append(" and Others"); @@ -62,8 +63,4 @@ private String getFormattedDefendantName(final List> defendants } return formattedDefendantName.toString(); } - - private boolean isDefendantNameKnown(final List> defendants) { - return defendants.getFirst().getValue().getNameKnown() == VerticalYesNo.YES; - } } diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseViewTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseViewTest.java index 204263c825..87825a4a54 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseViewTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseViewTest.java @@ -24,7 +24,6 @@ import uk.gov.hmcts.reform.pcs.ccd.repository.PcsCaseRepository; import uk.gov.hmcts.reform.pcs.ccd.service.CaseTitleService; import uk.gov.hmcts.reform.pcs.ccd.service.DraftCaseDataService; -import uk.gov.hmcts.reform.pcs.ccd.service.globalsearch.CaseNameHmctsFormatter; import uk.gov.hmcts.reform.pcs.ccd.view.AlternativesToPossessionView; import uk.gov.hmcts.reform.pcs.ccd.view.AsbProhibitedConductView; import uk.gov.hmcts.reform.pcs.ccd.view.ClaimGroundsView; @@ -35,6 +34,8 @@ import uk.gov.hmcts.reform.pcs.ccd.view.RentDetailsView; import uk.gov.hmcts.reform.pcs.ccd.view.StatementOfTruthView; import uk.gov.hmcts.reform.pcs.ccd.view.TenancyLicenceView; +import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseManagementLocationView; +import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseNameHmctsView; import uk.gov.hmcts.reform.pcs.exception.CaseNotFoundException; import uk.gov.hmcts.reform.pcs.postcodecourt.model.LegislativeCountry; import uk.gov.hmcts.reform.pcs.security.SecurityContextService; @@ -95,7 +96,9 @@ class PCSCaseViewTest { @Mock private ClaimEntity claimEntity; @Mock - private CaseNameHmctsFormatter caseNameHmctsFormatter; + private CaseNameHmctsView caseNameHmctsView; + @Mock + CaseManagementLocationView caseManagementLocationView; private PCSCaseView underTest; @@ -108,7 +111,7 @@ void setUp() { caseTitleService, claimView, tenancyLicenceView, claimGroundsView, rentDetailsView, alternativesToPossessionView, housingActWalesView, asbProhibitedConductView, rentArrearsView, noticeOfPossessionView, - statementOfTruthView, caseNameHmctsFormatter + statementOfTruthView, caseNameHmctsView, caseManagementLocationView ); } @@ -337,12 +340,23 @@ void shouldSetCaseFieldsInViewHelpers() { @Test void shouldSetCaseNameHmctsField() { // When - doNothing().when(caseNameHmctsFormatter).setCaseNameHmctsField(any(PCSCase.class)); + doNothing().when(caseNameHmctsView).setCaseNameHmctsField(any(PCSCase.class)); + + PCSCase pcsCase = underTest.getCase(request(CASE_REFERENCE, DEFAULT_STATE)); + + // Then + verify(caseNameHmctsView).setCaseNameHmctsField(pcsCase); + } + + @Test + void shouldSetCaseManagementLocationField() { + // When + doNothing().when(caseManagementLocationView).setCaseManagementLocationField(any(PCSCase.class)); PCSCase pcsCase = underTest.getCase(request(CASE_REFERENCE, DEFAULT_STATE)); // Then - verify(caseNameHmctsFormatter).setCaseNameHmctsField(pcsCase); + verify(caseManagementLocationView).setCaseManagementLocationField(pcsCase); } private AddressUK stubAddressEntityModelMapper(AddressEntity addressEntity) { diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationViewTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationViewTest.java new file mode 100644 index 0000000000..0d5d43848b --- /dev/null +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationViewTest.java @@ -0,0 +1,40 @@ +package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; + +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class CaseManagementLocationViewTest { + + @Mock + PCSCase pcsCase; + + + private CaseManagementLocationView underTest; + + @BeforeEach + void setUp() { + underTest = new CaseManagementLocationView(); + } + + @Test + void shouldSetCaseManagementLocation() { + + when(pcsCase.getCaseManagementLocation()).thenReturn(29096); + when(pcsCase.getRegionId()).thenReturn(1); + + underTest.setCaseManagementLocationField(pcsCase); + + // Then + verify(pcsCase).setCaseManagementLocationFormatted("{region:1,baseLocation:29096}"); + } +} + diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/globalsearch/CaseNameHmctsFormatterTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java similarity index 85% rename from src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/globalsearch/CaseNameHmctsFormatterTest.java rename to src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java index 2503ae7948..344c944f02 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/globalsearch/CaseNameHmctsFormatterTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java @@ -1,9 +1,7 @@ -package uk.gov.hmcts.reform.pcs.ccd.service.globalsearch; +package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; 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.ListValue; import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; @@ -18,7 +16,7 @@ import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -class CaseNameHmctsFormatterTest { +class CaseNameHmctsViewTest { private static final String CLAIMANT_NAME = "Freeman"; private static final String DEFENDANT_LAST_NAME = "Jackson"; @@ -26,7 +24,7 @@ class CaseNameHmctsFormatterTest { @Mock private PCSCase pcsCase; - private CaseNameHmctsFormatter underTest; + private CaseNameHmctsView underTest; @Mock private ListValue defendantPartyListValue; @@ -42,7 +40,7 @@ class CaseNameHmctsFormatterTest { @BeforeEach void setUp() { - underTest = new CaseNameHmctsFormatter(); + underTest = new CaseNameHmctsView(); } @@ -53,7 +51,6 @@ void shouldSetCaseNameWhenClaimantIsOrgAndDefendantIsKnown() { when(defendantPartyListValue.getValue()).thenReturn(defendantParty); when(claimantListValue.getValue()).thenReturn(claimantParty); when(claimantParty.getOrgName()).thenReturn(CLAIMANT_ORGANISATION_NAME); - when(defendantParty.getNameKnown()).thenReturn(YES); when(defendantParty.getLastName()).thenReturn(DEFENDANT_LAST_NAME); underTest.setCaseNameHmctsField(pcsCase); @@ -71,7 +68,6 @@ void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantIsKnown() { when(defendantPartyListValue.getValue()).thenReturn(defendantParty); when(claimantListValue.getValue()).thenReturn(claimantParty); when(claimantParty.getLastName()).thenReturn(CLAIMANT_NAME); - when(defendantParty.getNameKnown()).thenReturn(YES); when(defendantParty.getLastName()).thenReturn(DEFENDANT_LAST_NAME); underTest.setCaseNameHmctsField(pcsCase); @@ -89,7 +85,6 @@ void shouldSetCaseNameWhenClaimantIsOrgAndMultipleDefendants() { when(defendantPartyListValue.getValue()).thenReturn(defendantParty); when(claimantListValue.getValue()).thenReturn(claimantParty); when(claimantParty.getOrgName()).thenReturn(CLAIMANT_ORGANISATION_NAME); - when(defendantParty.getNameKnown()).thenReturn(YES); when(defendantParty.getLastName()).thenReturn(DEFENDANT_LAST_NAME); underTest.setCaseNameHmctsField(pcsCase); @@ -103,11 +98,9 @@ void shouldSetCaseNameWhenClaimantIsOrgAndMultipleDefendants() { @Test void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantUnkown() { when(pcsCase.getAllClaimants()).thenReturn(List.of(claimantListValue)); - when(pcsCase.getAllDefendants()).thenReturn(List.of(defendantPartyListValue)); + when(pcsCase.getAllDefendants()).thenReturn(null); when(claimantListValue.getValue()).thenReturn(claimantParty); - when(defendantPartyListValue.getValue()).thenReturn(defendantParty); when(claimantParty.getLastName()).thenReturn(CLAIMANT_NAME); - when(defendantParty.getNameKnown()).thenReturn(NO); underTest.setCaseNameHmctsField(pcsCase); From b4782527a4ad6206e7d99feb030b87fc0bb81ab0 Mon Sep 17 00:00:00 2001 From: SachinNaik Date: Tue, 24 Mar 2026 21:50:57 +0000 Subject: [PATCH 2/8] HDPI-4054 Adding caseManagementLocation as top level field --- .../pcs/ccd/view/globalsearch/CaseNameHmctsView.java | 7 ++++++- .../pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java | 9 ++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java index 7c09a50f23..3513fac716 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java @@ -3,6 +3,7 @@ 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.List; @@ -49,7 +50,7 @@ private String getFormattedClaimantName(final List> claimants) private String getFormattedDefendantName(final List> defendants) { StringBuilder formattedDefendantName = new StringBuilder(); - if (defendants != null && !defendants.isEmpty()) { + if (defendants != null && !defendants.isEmpty() && isDefendantNameKnown(defendants)) { formattedDefendantName.append(defendants.stream() .findFirst() .map(ListValue::getValue) @@ -63,4 +64,8 @@ private String getFormattedDefendantName(final List> defendants } return formattedDefendantName.toString(); } + + private boolean isDefendantNameKnown(final List> defendants) { + return defendants.getFirst().getValue().getNameKnown() == VerticalYesNo.YES; + } } diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java index 344c944f02..2523eba1d5 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java @@ -2,6 +2,8 @@ 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.ListValue; import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; @@ -51,6 +53,7 @@ void shouldSetCaseNameWhenClaimantIsOrgAndDefendantIsKnown() { when(defendantPartyListValue.getValue()).thenReturn(defendantParty); when(claimantListValue.getValue()).thenReturn(claimantParty); when(claimantParty.getOrgName()).thenReturn(CLAIMANT_ORGANISATION_NAME); + when(defendantParty.getNameKnown()).thenReturn(YES); when(defendantParty.getLastName()).thenReturn(DEFENDANT_LAST_NAME); underTest.setCaseNameHmctsField(pcsCase); @@ -68,6 +71,7 @@ void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantIsKnown() { when(defendantPartyListValue.getValue()).thenReturn(defendantParty); when(claimantListValue.getValue()).thenReturn(claimantParty); when(claimantParty.getLastName()).thenReturn(CLAIMANT_NAME); + when(defendantParty.getNameKnown()).thenReturn(YES); when(defendantParty.getLastName()).thenReturn(DEFENDANT_LAST_NAME); underTest.setCaseNameHmctsField(pcsCase); @@ -85,6 +89,7 @@ void shouldSetCaseNameWhenClaimantIsOrgAndMultipleDefendants() { when(defendantPartyListValue.getValue()).thenReturn(defendantParty); when(claimantListValue.getValue()).thenReturn(claimantParty); when(claimantParty.getOrgName()).thenReturn(CLAIMANT_ORGANISATION_NAME); + when(defendantParty.getNameKnown()).thenReturn(YES); when(defendantParty.getLastName()).thenReturn(DEFENDANT_LAST_NAME); underTest.setCaseNameHmctsField(pcsCase); @@ -98,9 +103,11 @@ void shouldSetCaseNameWhenClaimantIsOrgAndMultipleDefendants() { @Test void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantUnkown() { when(pcsCase.getAllClaimants()).thenReturn(List.of(claimantListValue)); - when(pcsCase.getAllDefendants()).thenReturn(null); + when(pcsCase.getAllDefendants()).thenReturn(List.of(defendantPartyListValue)); when(claimantListValue.getValue()).thenReturn(claimantParty); + when(defendantPartyListValue.getValue()).thenReturn(defendantParty); when(claimantParty.getLastName()).thenReturn(CLAIMANT_NAME); + when(defendantParty.getNameKnown()).thenReturn(NO); underTest.setCaseNameHmctsField(pcsCase); From f6a9edab40d3e96c426a59b512f2702a6c83eb2b Mon Sep 17 00:00:00 2001 From: SachinNaik Date: Wed, 25 Mar 2026 15:58:06 +0000 Subject: [PATCH 3/8] HDPI-4054 Adding caseManagementLocation as top level field --- .../gov/hmcts/reform/pcs/ccd/PCSCaseView.java | 9 +-- ...NameHmctsView.java => CaseFieldsView.java} | 58 ++++++++++++++----- .../CaseManagementLocationView.java | 34 ----------- .../hmcts/reform/pcs/ccd/PCSCaseViewTest.java | 26 ++------- ...sViewTest.java => CaseFieldsViewTest.java} | 36 +++++++++--- .../CaseManagementLocationViewTest.java | 40 ------------- 6 files changed, 81 insertions(+), 122 deletions(-) rename src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/{CaseNameHmctsView.java => CaseFieldsView.java} (52%) delete mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationView.java rename src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/{CaseNameHmctsViewTest.java => CaseFieldsViewTest.java} (85%) delete mode 100644 src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationViewTest.java 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 86d18fd04e..67c12b6cea 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 @@ -33,8 +33,7 @@ import uk.gov.hmcts.reform.pcs.ccd.view.RentDetailsView; import uk.gov.hmcts.reform.pcs.ccd.view.StatementOfTruthView; import uk.gov.hmcts.reform.pcs.ccd.view.TenancyLicenceView; -import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseManagementLocationView; -import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseNameHmctsView; +import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseFieldsView; import uk.gov.hmcts.reform.pcs.exception.CaseNotFoundException; import uk.gov.hmcts.reform.pcs.security.SecurityContextService; @@ -69,8 +68,7 @@ public class PCSCaseView implements CaseView { private final RentArrearsView rentArrearsView; private final NoticeOfPossessionView noticeOfPossessionView; private final StatementOfTruthView statementOfTruthView; - private final CaseNameHmctsView caseNameHmctsView; - private final CaseManagementLocationView caseManagementLocationView; + private final CaseFieldsView caseFieldsView; /** @@ -85,8 +83,7 @@ public PCSCase getCase(CaseViewRequest request) { boolean hasUnsubmittedCaseData = caseHasUnsubmittedData(caseReference, state); - caseNameHmctsView.setCaseNameHmctsField(pcsCase); - caseManagementLocationView.setCaseManagementLocationField(pcsCase); + caseFieldsView.setCaseFields(pcsCase); setMarkdownFields(pcsCase, hasUnsubmittedCaseData); diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsView.java similarity index 52% rename from src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java rename to src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsView.java index 3513fac716..e3896d8e03 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsView.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsView.java @@ -12,15 +12,25 @@ @Component @AllArgsConstructor -public class CaseNameHmctsView { +public class CaseFieldsView { + + + /** + * Sets case fields for the pcsCase. + * @param pcsCase The current case data + */ + public void setCaseFields(final PCSCase pcsCase) { + setCaseNameHmctsField(pcsCase); + setCaseManagementLocationField(pcsCase); + } /** - * Builds a formatted string for the case name hmcts field based on - * certain rules and sets the internal, restricted and public field accordingly. + * Builds a formatted string for the case name hmcts field based on certain rules and sets the internal, restricted + * and public field accordingly. * * @param pcsCase The current case data */ - public void setCaseNameHmctsField(final PCSCase pcsCase) { + private void setCaseNameHmctsField(final PCSCase pcsCase) { final List> defendants = pcsCase.getAllDefendants(); final List> claimants = pcsCase.getAllClaimants(); @@ -33,17 +43,31 @@ public 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 + */ + public void setCaseManagementLocationField(final PCSCase pcsCase) { + Integer epimsId = pcsCase.getCaseManagementLocation(); + Integer region = pcsCase.getRegionId(); + + if (epimsId != null && region != null) { + pcsCase.setCaseManagementLocationFormatted(getFormattedValue(region, epimsId)); + } + } + private String getFormattedClaimantName(final List> claimants) { StringBuilder formattedClaimantName = new StringBuilder(); if (claimants != null && !claimants.isEmpty()) { formattedClaimantName.append(claimants.stream() - .findFirst() - .map(ListValue::getValue) - .map(claimant -> - claimant.getOrgName() != null - ? claimant.getOrgName() : - claimant.getLastName()) - .orElse(null)); + .findFirst() + .map(ListValue::getValue) + .map(claimant -> + claimant.getOrgName() != null + ? claimant.getOrgName() : + claimant.getLastName()) + .orElse(null)); } return formattedClaimantName.toString(); } @@ -52,10 +76,10 @@ private String getFormattedDefendantName(final List> defendants StringBuilder formattedDefendantName = new StringBuilder(); if (defendants != null && !defendants.isEmpty() && isDefendantNameKnown(defendants)) { formattedDefendantName.append(defendants.stream() - .findFirst() - .map(ListValue::getValue) - .map(Party::getLastName) - .orElse(null)); + .findFirst() + .map(ListValue::getValue) + .map(Party::getLastName) + .orElse(null)); if (defendants.size() > 1) { formattedDefendantName.append(" and Others"); } @@ -68,4 +92,8 @@ 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 String.format("{region:%s,baseLocation:%s}", region, epimsId); + } } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationView.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationView.java deleted file mode 100644 index 819957dad4..0000000000 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationView.java +++ /dev/null @@ -1,34 +0,0 @@ -package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; - -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; - -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -@Component -@AllArgsConstructor -@Slf4j -public class CaseManagementLocationView { - - - /** - * Builds a formatted string for the case management location field - * based on epimsId and regionId. - * - * @param pcsCase The current case data - */ - public void setCaseManagementLocationField(final PCSCase pcsCase) { - final Integer epimsId = pcsCase.getCaseManagementLocation(); - final Integer region = pcsCase.getRegionId(); - - if (epimsId != null && region != null) { - pcsCase.setCaseManagementLocationFormatted(getFormattedValue(region, epimsId)); - } - } - - - private String getFormattedValue(final Integer region, final Integer epimsId) { - return String.format("{region:%s,baseLocation:%s}", region, epimsId); - } -} diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseViewTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseViewTest.java index 87825a4a54..325c41f5f3 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseViewTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseViewTest.java @@ -34,8 +34,7 @@ import uk.gov.hmcts.reform.pcs.ccd.view.RentDetailsView; import uk.gov.hmcts.reform.pcs.ccd.view.StatementOfTruthView; import uk.gov.hmcts.reform.pcs.ccd.view.TenancyLicenceView; -import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseManagementLocationView; -import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseNameHmctsView; +import uk.gov.hmcts.reform.pcs.ccd.view.globalsearch.CaseFieldsView; import uk.gov.hmcts.reform.pcs.exception.CaseNotFoundException; import uk.gov.hmcts.reform.pcs.postcodecourt.model.LegislativeCountry; import uk.gov.hmcts.reform.pcs.security.SecurityContextService; @@ -96,9 +95,7 @@ class PCSCaseViewTest { @Mock private ClaimEntity claimEntity; @Mock - private CaseNameHmctsView caseNameHmctsView; - @Mock - CaseManagementLocationView caseManagementLocationView; + private CaseFieldsView caseFieldsView; private PCSCaseView underTest; @@ -111,7 +108,7 @@ void setUp() { caseTitleService, claimView, tenancyLicenceView, claimGroundsView, rentDetailsView, alternativesToPossessionView, housingActWalesView, asbProhibitedConductView, rentArrearsView, noticeOfPossessionView, - statementOfTruthView, caseNameHmctsView, caseManagementLocationView + statementOfTruthView, caseFieldsView ); } @@ -338,25 +335,14 @@ void shouldSetCaseFieldsInViewHelpers() { } @Test - void shouldSetCaseNameHmctsField() { - // When - doNothing().when(caseNameHmctsView).setCaseNameHmctsField(any(PCSCase.class)); - - PCSCase pcsCase = underTest.getCase(request(CASE_REFERENCE, DEFAULT_STATE)); - - // Then - verify(caseNameHmctsView).setCaseNameHmctsField(pcsCase); - } - - @Test - void shouldSetCaseManagementLocationField() { + void shouldSetCaseFields() { // When - doNothing().when(caseManagementLocationView).setCaseManagementLocationField(any(PCSCase.class)); + doNothing().when(caseFieldsView).setCaseFields(any(PCSCase.class)); PCSCase pcsCase = underTest.getCase(request(CASE_REFERENCE, DEFAULT_STATE)); // Then - verify(caseManagementLocationView).setCaseManagementLocationField(pcsCase); + verify(caseFieldsView).setCaseFields(pcsCase); } private AddressUK stubAddressEntityModelMapper(AddressEntity addressEntity) { diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsViewTest.java similarity index 85% rename from src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java rename to src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsViewTest.java index 2523eba1d5..b451af1e75 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseNameHmctsViewTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsViewTest.java @@ -18,7 +18,7 @@ import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -class CaseNameHmctsViewTest { +class CaseFieldsViewTest { private static final String CLAIMANT_NAME = "Freeman"; private static final String DEFENDANT_LAST_NAME = "Jackson"; @@ -26,7 +26,7 @@ class CaseNameHmctsViewTest { @Mock private PCSCase pcsCase; - private CaseNameHmctsView underTest; + private CaseFieldsView underTest; @Mock private ListValue defendantPartyListValue; @@ -42,12 +42,13 @@ class CaseNameHmctsViewTest { @BeforeEach void setUp() { - underTest = new CaseNameHmctsView(); + underTest = new CaseFieldsView(); } @Test void shouldSetCaseNameWhenClaimantIsOrgAndDefendantIsKnown() { + //Given when(pcsCase.getAllClaimants()).thenReturn(List.of(claimantListValue)); when(pcsCase.getAllDefendants()).thenReturn(List.of(defendantPartyListValue)); when(defendantPartyListValue.getValue()).thenReturn(defendantParty); @@ -56,7 +57,8 @@ void shouldSetCaseNameWhenClaimantIsOrgAndDefendantIsKnown() { when(defendantParty.getNameKnown()).thenReturn(YES); when(defendantParty.getLastName()).thenReturn(DEFENDANT_LAST_NAME); - underTest.setCaseNameHmctsField(pcsCase); + //When + underTest.setCaseFields(pcsCase); // Then verify(pcsCase).setCaseNameHmctsRestricted("Treetops Housing vs Jackson"); @@ -66,6 +68,7 @@ void shouldSetCaseNameWhenClaimantIsOrgAndDefendantIsKnown() { @Test void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantIsKnown() { + //Given when(pcsCase.getAllClaimants()).thenReturn(List.of(claimantListValue)); when(pcsCase.getAllDefendants()).thenReturn(List.of(defendantPartyListValue)); when(defendantPartyListValue.getValue()).thenReturn(defendantParty); @@ -74,7 +77,8 @@ void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantIsKnown() { when(defendantParty.getNameKnown()).thenReturn(YES); when(defendantParty.getLastName()).thenReturn(DEFENDANT_LAST_NAME); - underTest.setCaseNameHmctsField(pcsCase); + //When + underTest.setCaseFields(pcsCase); // Then verify(pcsCase).setCaseNameHmctsRestricted("Freeman vs Jackson"); @@ -84,6 +88,7 @@ void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantIsKnown() { @Test void shouldSetCaseNameWhenClaimantIsOrgAndMultipleDefendants() { + //Given when(pcsCase.getAllClaimants()).thenReturn(List.of(claimantListValue)); when(pcsCase.getAllDefendants()).thenReturn(List.of(defendantPartyListValue, defendantPartyListValue)); when(defendantPartyListValue.getValue()).thenReturn(defendantParty); @@ -92,7 +97,8 @@ void shouldSetCaseNameWhenClaimantIsOrgAndMultipleDefendants() { when(defendantParty.getNameKnown()).thenReturn(YES); when(defendantParty.getLastName()).thenReturn(DEFENDANT_LAST_NAME); - underTest.setCaseNameHmctsField(pcsCase); + //When + underTest.setCaseFields(pcsCase); // Then verify(pcsCase).setCaseNameHmctsRestricted("Treetops Housing vs Jackson and Others"); @@ -102,6 +108,7 @@ void shouldSetCaseNameWhenClaimantIsOrgAndMultipleDefendants() { @Test void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantUnkown() { + //Given when(pcsCase.getAllClaimants()).thenReturn(List.of(claimantListValue)); when(pcsCase.getAllDefendants()).thenReturn(List.of(defendantPartyListValue)); when(claimantListValue.getValue()).thenReturn(claimantParty); @@ -109,11 +116,26 @@ void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantUnkown() { when(claimantParty.getLastName()).thenReturn(CLAIMANT_NAME); when(defendantParty.getNameKnown()).thenReturn(NO); - underTest.setCaseNameHmctsField(pcsCase); + //When + underTest.setCaseFields(pcsCase); // Then verify(pcsCase).setCaseNameHmctsRestricted("Freeman vs persons unknown"); verify(pcsCase).setCaseNameHmctsInternal("Freeman vs persons unknown"); verify(pcsCase).setCaseNamePublic("Freeman vs persons unknown"); } + + @Test + void shouldSetCaseManagementLocation() { + + //Given + when(pcsCase.getCaseManagementLocation()).thenReturn(29096); + when(pcsCase.getRegionId()).thenReturn(1); + + //When + underTest.setCaseFields(pcsCase); + + // Then + verify(pcsCase).setCaseManagementLocationFormatted("{region:1,baseLocation:29096}"); + } } diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationViewTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationViewTest.java deleted file mode 100644 index 0d5d43848b..0000000000 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/view/globalsearch/CaseManagementLocationViewTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; - -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -@ExtendWith(MockitoExtension.class) -class CaseManagementLocationViewTest { - - @Mock - PCSCase pcsCase; - - - private CaseManagementLocationView underTest; - - @BeforeEach - void setUp() { - underTest = new CaseManagementLocationView(); - } - - @Test - void shouldSetCaseManagementLocation() { - - when(pcsCase.getCaseManagementLocation()).thenReturn(29096); - when(pcsCase.getRegionId()).thenReturn(1); - - underTest.setCaseManagementLocationField(pcsCase); - - // Then - verify(pcsCase).setCaseManagementLocationFormatted("{region:1,baseLocation:29096}"); - } -} - From a105147444d08135a3d281b9d225080f38d09c68 Mon Sep 17 00:00:00 2001 From: SachinNaik Date: Wed, 25 Mar 2026 16:15:52 +0000 Subject: [PATCH 4/8] HDPI-4054 Adding caseManagementLocation as top level field --- .../view/globalsearch/CaseFieldsViewTest.java | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) 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 b451af1e75..fd7a4a3cb4 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,5 +1,7 @@ package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo.NO; @@ -126,7 +128,7 @@ void shouldSetCaseNameWhenClaimantIsCitizenAndDefendantUnkown() { } @Test - void shouldSetCaseManagementLocation() { + void shouldSetCaseManagementLocationFormatted() { //Given when(pcsCase.getCaseManagementLocation()).thenReturn(29096); @@ -138,4 +140,46 @@ void shouldSetCaseManagementLocation() { // Then verify(pcsCase).setCaseManagementLocationFormatted("{region:1,baseLocation:29096}"); } + + @Test + void shouldSetCaseManagementLocationFormattedNullIfEpimsIdIsNull() { + + //Given + when(pcsCase.getCaseManagementLocation()).thenReturn(null); + when(pcsCase.getRegionId()).thenReturn(1); + + //When + underTest.setCaseFields(pcsCase); + + // Then + verify(pcsCase, atLeast(0)).setCaseManagementLocationFormatted(anyString()); + } + + @Test + void shouldSetCaseManagementLocationFormattedNullIfRegionIdIsNull() { + + //Given + when(pcsCase.getCaseManagementLocation()).thenReturn(2906); + when(pcsCase.getRegionId()).thenReturn(null); + + //When + underTest.setCaseFields(pcsCase); + + // Then + verify(pcsCase, atLeast(0)).setCaseManagementLocationFormatted(anyString()); + } + + @Test + void shouldSetCaseManagementLocationFormattedNullIfBothIdsAreNull() { + + //Given + when(pcsCase.getCaseManagementLocation()).thenReturn(null); + when(pcsCase.getRegionId()).thenReturn(null); + + //When + underTest.setCaseFields(pcsCase); + + // Then + verify(pcsCase, atLeast(0)).setCaseManagementLocationFormatted(anyString()); + } } From bdab0326d4192d7238dd87f5c5a87ca766fdef24 Mon Sep 17 00:00:00 2001 From: SachinNaik Date: Wed, 25 Mar 2026 16:25:55 +0000 Subject: [PATCH 5/8] HDPI-4054 Adding caseManagementLocation as top level field --- .../hmcts/reform/pcs/ccd/view/globalsearch/CaseFieldsView.java | 2 -- 1 file changed, 2 deletions(-) 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 e3896d8e03..f44af672cc 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 @@ -7,11 +7,9 @@ import java.util.List; -import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; @Component -@AllArgsConstructor public class CaseFieldsView { From f9c8f62bb35ec314d3ac3a7782de1ccfd5f970e8 Mon Sep 17 00:00:00 2001 From: SachinNaik Date: Wed, 25 Mar 2026 18:02:46 +0000 Subject: [PATCH 6/8] HDPI-4054 Adding caseManagementLocation as top level field --- .../ccd/view/globalsearch/CaseFieldsView.java | 11 ++++- .../view/globalsearch/CaseFieldsViewTest.java | 47 +++++-------------- 2 files changed, 22 insertions(+), 36 deletions(-) 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 f44af672cc..b5e96683b6 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 @@ -46,7 +46,7 @@ private void setCaseNameHmctsField(final PCSCase pcsCase) { * * @param pcsCase The current case data */ - public void setCaseManagementLocationField(final PCSCase pcsCase) { + private void setCaseManagementLocationField(final PCSCase pcsCase) { Integer epimsId = pcsCase.getCaseManagementLocation(); Integer region = pcsCase.getRegionId(); @@ -92,6 +92,13 @@ private boolean isDefendantNameKnown(final List> defendants) { } private String getFormattedValue(int region, int epimsId) { - return String.format("{region:%s,baseLocation:%s}", region, epimsId); + var builder = new StringBuilder(); + return builder + .append("{region:") + .append(region) + .append(",baseLocation:") + .append(epimsId).append("}") + .toString(); + } } 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 fd7a4a3cb4..d6fbf8f879 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,7 +1,7 @@ package uk.gov.hmcts.reform.pcs.ccd.view.globalsearch; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.atLeast; +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; @@ -16,6 +16,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; @@ -141,45 +143,22 @@ void shouldSetCaseManagementLocationFormatted() { verify(pcsCase).setCaseManagementLocationFormatted("{region:1,baseLocation:29096}"); } - @Test - void shouldSetCaseManagementLocationFormattedNullIfEpimsIdIsNull() { - - //Given - when(pcsCase.getCaseManagementLocation()).thenReturn(null); - when(pcsCase.getRegionId()).thenReturn(1); - - //When - underTest.setCaseFields(pcsCase); - - // Then - verify(pcsCase, atLeast(0)).setCaseManagementLocationFormatted(anyString()); - } - - @Test - void shouldSetCaseManagementLocationFormattedNullIfRegionIdIsNull() { - - //Given - when(pcsCase.getCaseManagementLocation()).thenReturn(2906); - when(pcsCase.getRegionId()).thenReturn(null); - - //When - underTest.setCaseFields(pcsCase); - - // Then - verify(pcsCase, atLeast(0)).setCaseManagementLocationFormatted(anyString()); - } - - @Test - void shouldSetCaseManagementLocationFormattedNullIfBothIdsAreNull() { + @ParameterizedTest + @CsvSource(value = { + "2096,null", + "null,1", + "null,null" + }, nullValues = {"null"}) + void shouldNotCallSetCaseManagementLocationFormattedWhenIDsAreNull(Integer epimsId, Integer regionId) { //Given - when(pcsCase.getCaseManagementLocation()).thenReturn(null); - when(pcsCase.getRegionId()).thenReturn(null); + when(pcsCase.getCaseManagementLocation()).thenReturn(epimsId); + when(pcsCase.getRegionId()).thenReturn(regionId); //When underTest.setCaseFields(pcsCase); // Then - verify(pcsCase, atLeast(0)).setCaseManagementLocationFormatted(anyString()); + verify(pcsCase, never()).setCaseManagementLocationFormatted(anyString()); } } From 2a48061c014b439120ac7ce5ee992899bbadebde Mon Sep 17 00:00:00 2001 From: SachinNaik Date: Wed, 25 Mar 2026 18:30:43 +0000 Subject: [PATCH 7/8] HDPI-4054 Adding caseManagementLocation as top level field --- .../ccd/view/globalsearch/CaseFieldsView.java | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) 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 b5e96683b6..735ec2086d 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 @@ -56,28 +56,20 @@ private void setCaseManagementLocationField(final PCSCase pcsCase) { } private String getFormattedClaimantName(final List> claimants) { - StringBuilder formattedClaimantName = new StringBuilder(); + String formattedClaimantName = null; if (claimants != null && !claimants.isEmpty()) { - formattedClaimantName.append(claimants.stream() - .findFirst() - .map(ListValue::getValue) - .map(claimant -> - claimant.getOrgName() != null - ? claimant.getOrgName() : - claimant.getLastName()) - .orElse(null)); + var claimant = claimants.getFirst().getValue(); + formattedClaimantName = claimant.getOrgName() != null + ? claimant.getOrgName() : + claimant.getLastName(); } - return formattedClaimantName.toString(); + return formattedClaimantName; } private String getFormattedDefendantName(final List> defendants) { StringBuilder formattedDefendantName = new StringBuilder(); if (defendants != null && !defendants.isEmpty() && isDefendantNameKnown(defendants)) { - formattedDefendantName.append(defendants.stream() - .findFirst() - .map(ListValue::getValue) - .map(Party::getLastName) - .orElse(null)); + formattedDefendantName.append(defendants.getFirst().getValue().getLastName()); if (defendants.size() > 1) { formattedDefendantName.append(" and Others"); } From 893c7aba4dbd612b391ed8e7956f2828ddf0078b Mon Sep 17 00:00:00 2001 From: SachinNaik Date: Thu, 26 Mar 2026 10:40:34 +0000 Subject: [PATCH 8/8] HDPI-4054 Adding caseManagementLocation as top level field --- .../reform/pcs/ccd/view/globalsearch/CaseFieldsView.java | 9 +-------- .../pcs/ccd/view/globalsearch/CaseFieldsViewTest.java | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) 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 735ec2086d..57736f2ab2 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 @@ -84,13 +84,6 @@ private boolean isDefendantNameKnown(final List> defendants) { } private String getFormattedValue(int region, int epimsId) { - var builder = new StringBuilder(); - return builder - .append("{region:") - .append(region) - .append(",baseLocation:") - .append(epimsId).append("}") - .toString(); - + return "{region:%s,baseLocation:%s}".formatted(region, epimsId); } } 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 d6fbf8f879..921c66ba94 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 @@ -149,7 +149,7 @@ void shouldSetCaseManagementLocationFormatted() { "null,1", "null,null" }, nullValues = {"null"}) - void shouldNotCallSetCaseManagementLocationFormattedWhenIDsAreNull(Integer epimsId, Integer regionId) { + void shouldNotCallSetCaseManagementLocationFormattedWhenEitherIdIsNull(Integer epimsId, Integer regionId) { //Given when(pcsCase.getCaseManagementLocation()).thenReturn(epimsId);