diff --git a/build.gradle b/build.gradle index 296a89c902..fcf1564858 100644 --- a/build.gradle +++ b/build.gradle @@ -95,6 +95,11 @@ ccd { configDir = file('build/definitions') decentralised = true runtimeIndexing = !integrationBuild + tsBindings { + enabled = true + outputDir.set(layout.projectDirectory.dir('../pcs-frontend/src/main/generated/ccd')) + moduleName = 'pcs' + } } tasks.withType(JavaCompile).configureEach { diff --git a/src/cftlibTest/java/uk/gov/hmcts/reform/pcs/CreatePossessionClaimTest.java b/src/cftlibTest/java/uk/gov/hmcts/reform/pcs/CreatePossessionClaimTest.java index 2855e139bb..2dbdba9426 100644 --- a/src/cftlibTest/java/uk/gov/hmcts/reform/pcs/CreatePossessionClaimTest.java +++ b/src/cftlibTest/java/uk/gov/hmcts/reform/pcs/CreatePossessionClaimTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.TestMethodOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import uk.gov.hmcts.ccd.sdk.CcdEventTestClient; import uk.gov.hmcts.ccd.sdk.type.AddressUK; import uk.gov.hmcts.ccd.sdk.type.ListValue; import uk.gov.hmcts.ccd.sdk.type.YesOrNo; @@ -30,6 +31,7 @@ import uk.gov.hmcts.reform.pcs.ccd.domain.TenancyLicenceDetails; import uk.gov.hmcts.reform.pcs.ccd.domain.TenancyLicenceType; import uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; import uk.gov.hmcts.reform.pcs.ccd.event.EventId; import uk.gov.hmcts.reform.pcs.postcodecourt.model.LegislativeCountry; import uk.gov.hmcts.rse.ccd.lib.test.CftlibTest; @@ -37,7 +39,7 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -import static uk.gov.hmcts.reform.pcs.ccd.event.EventId.createPossessionClaim; +import static uk.gov.hmcts.reform.pcs.ccd.event.CreatePossessionClaim.EVENT; import static uk.gov.hmcts.reform.pcs.ccd.event.EventId.resumePossessionClaim; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) @@ -54,6 +56,9 @@ class CreatePossessionClaimTest extends CftlibTest { @Autowired private ObjectMapper objectMapper; + @Autowired + private CcdEventTestClient ccdEventTestClient; + private String idamToken; private String s2sToken; private Long caseReference; @@ -67,20 +72,24 @@ void setup() { @Test @Order(1) void createPossessionClaim() { - - PCSCase caseData = PCSCase.builder() + CreateClaimData caseData = CreateClaimData.builder() .propertyAddress(AddressUK.builder() .addressLine1("123 Baker Street") .addressLine2("Marylebone") .postTown("London") .county("Greater London") .postCode("NW1 6XE") - .build() - ) + .build()) .legislativeCountry(LegislativeCountry.ENGLAND) .build(); - CaseDetails caseDetails = startAndSubmitCreationEvent(createPossessionClaim, caseData); + CaseDetails caseDetails = ccdEventTestClient.startAndSubmitCreateEvent( + idamToken, + s2sToken, + CaseType.getCaseType(), + EVENT, + caseData + ); caseReference = caseDetails.getId(); assertThat(caseReference).isNotNull(); @@ -126,24 +135,6 @@ void resumePossessionClaim() { assertThat(retrievedCase.getState()).isEqualTo(State.PENDING_CASE_ISSUED.name()); } - @SuppressWarnings("SameParameterValue") - private CaseDetails startAndSubmitCreationEvent(EventId eventId, PCSCase caseData) { - StartEventResponse startEventResponse = ccdApi.startCase( - idamToken, - s2sToken, - CaseType.getCaseType(), - eventId.name() - ); - - CaseDataContent content = CaseDataContent.builder() - .data(caseData) - .event(Event.builder().id(eventId.name()).build()) - .eventToken(startEventResponse.getToken()) - .build(); - - return ccdApi.submitCaseCreation(idamToken, s2sToken, CaseType.getCaseType(), content); - } - @SuppressWarnings("SameParameterValue") private CaseResource startAndSubmitUpdateEvent(EventId eventId, PCSCase caseData) { StartEventResponse startEventResponse = ccdApi.startEvent( diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/dto/CreateClaimData.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/dto/CreateClaimData.java new file mode 100644 index 0000000000..22c6d45e19 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/dto/CreateClaimData.java @@ -0,0 +1,31 @@ +package uk.gov.hmcts.reform.pcs.ccd.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import uk.gov.hmcts.ccd.sdk.api.CCD; +import uk.gov.hmcts.ccd.sdk.type.AddressUK; +import uk.gov.hmcts.ccd.sdk.type.FieldType; +import uk.gov.hmcts.ccd.sdk.type.YesOrNo; +import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringList; +import uk.gov.hmcts.reform.pcs.postcodecourt.model.LegislativeCountry; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CreateClaimData { + @CCD(ignore = true) + private AddressUK propertyAddress; + private LegislativeCountry legislativeCountry; + private String feeAmount; + private YesOrNo showCrossBorderPage; + private YesOrNo showPropertyNotEligiblePage; + private YesOrNo showPostcodeNotAssignedToCourt; + @CCD(typeOverride = FieldType.DynamicRadioList) + private DynamicStringList crossBorderCountriesList; + private String crossBorderCountry1; + private String crossBorderCountry2; + private String postcodeNotAssignedView; +} diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/CreatePossessionClaim.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/CreatePossessionClaim.java index a30caa3b2d..2990d26319 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/CreatePossessionClaim.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/CreatePossessionClaim.java @@ -4,15 +4,16 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import uk.gov.hmcts.ccd.sdk.api.CCDConfig; +import uk.gov.hmcts.ccd.sdk.api.CcdEventBinding; import uk.gov.hmcts.ccd.sdk.api.DecentralisedConfigBuilder; import uk.gov.hmcts.ccd.sdk.api.Event.EventBuilder; import uk.gov.hmcts.ccd.sdk.api.EventPayload; import uk.gov.hmcts.ccd.sdk.api.Permission; import uk.gov.hmcts.ccd.sdk.api.callback.SubmitResponse; import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.UserRole; -import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.ccd.domain.State; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; import uk.gov.hmcts.reform.pcs.ccd.page.createpossessionclaim.CrossBorderPostcodeSelection; import uk.gov.hmcts.reform.pcs.ccd.page.createpossessionclaim.EnterPropertyAddress; import uk.gov.hmcts.reform.pcs.ccd.page.createpossessionclaim.PostcodeNotAssignedToCourt; @@ -22,6 +23,8 @@ import uk.gov.hmcts.reform.pcs.ccd.util.FeeApplier; import uk.gov.hmcts.reform.pcs.feesandpay.model.FeeType; +import java.util.function.Consumer; + import static uk.gov.hmcts.reform.pcs.ccd.event.EventId.createPossessionClaim; @@ -30,6 +33,9 @@ @AllArgsConstructor public class CreatePossessionClaim implements CCDConfig { + public static final CcdEventBinding EVENT = + CcdEventBinding.of(createPossessionClaim.name(), "cpc", CreateClaimData.class); + private final PcsCaseService pcsCaseService; private final FeeApplier feeApplier; private final EnterPropertyAddress enterPropertyAddress; @@ -38,41 +44,35 @@ public class CreatePossessionClaim implements CCDConfig configBuilder) { - EventBuilder eventBuilder = + EventBuilder eventBuilder = configBuilder - .decentralisedEvent(createPossessionClaim.name(), this::submit, this::start) + .decentralisedEvent(EVENT, this::submit, this::start) .initialState(State.AWAITING_SUBMISSION_TO_HMCTS) .showSummary() .name("Make a claim") .grant(Permission.CRUD, UserRole.PCS_SOLICITOR); - new PageBuilder(eventBuilder) - .add(new StartTheService()) - .add(enterPropertyAddress) - .add(crossBorderPostcodeSelection) - .add(propertyNotEligible) - .add(new PostcodeNotAssignedToCourt()); - + new StartTheService().addTo(eventBuilder); + enterPropertyAddress.addTo(eventBuilder); + crossBorderPostcodeSelection.addTo(eventBuilder); + propertyNotEligible.addTo(eventBuilder); + new PostcodeNotAssignedToCourt().addTo(eventBuilder); } - private PCSCase start(EventPayload eventPayload) { - PCSCase caseData = eventPayload.caseData(); + private CreateClaimData start(EventPayload eventPayload) { + CreateClaimData caseData = eventPayload.caseData(); - applyCaseIssueFeeAmount(caseData); + applyCaseIssueFeeAmount(caseData::setFeeAmount); return caseData; } - private void applyCaseIssueFeeAmount(PCSCase pcsCase) { - feeApplier.applyFeeAmount( - pcsCase, - FeeType.CASE_ISSUE_FEE, - PCSCase::setFeeAmount - ); + private void applyCaseIssueFeeAmount(Consumer setter) { + feeApplier.applyFeeAmount(FeeType.CASE_ISSUE_FEE, setter); } - private SubmitResponse submit(EventPayload eventPayload) { + private SubmitResponse submit(EventPayload eventPayload) { long caseReference = eventPayload.caseReference(); - PCSCase caseData = eventPayload.caseData(); + CreateClaimData caseData = eventPayload.caseData(); pcsCaseService.createCase(caseReference, caseData.getPropertyAddress(), caseData.getLegislativeCountry()); diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/enforcetheorder/EnforceTheOrder.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/enforcetheorder/EnforceTheOrder.java index 8c2ffe186c..ba380119a2 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/enforcetheorder/EnforceTheOrder.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/enforcetheorder/EnforceTheOrder.java @@ -91,15 +91,16 @@ private void populateDefendantSelectionList(PCSCase caseData) { } private void applyWarrantFeeAmount(PCSCase pcsCase) { - feeApplier.applyFeeAmount(pcsCase, + feeApplier.applyFeeAmount( FeeType.ENFORCEMENT_WARRANT_FEE, - (caseData, fee) -> caseData.getEnforcementOrder().setWarrantFeeAmount(fee)); + pcsCase.getEnforcementOrder()::setWarrantFeeAmount + ); } private void applyWritFeeAmount(PCSCase pcsCase) { - feeApplier.applyFeeAmount(pcsCase, + feeApplier.applyFeeAmount( FeeType.ENFORCEMENT_WRIT_FEE, - (caseData, fee) -> caseData.getEnforcementOrder().setWritFeeAmount(fee) + pcsCase.getEnforcementOrder()::setWritFeeAmount ); } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/CrossBorderPostcodeSelection.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/CrossBorderPostcodeSelection.java index 8d998ba56d..5d828bf251 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/CrossBorderPostcodeSelection.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/CrossBorderPostcodeSelection.java @@ -6,11 +6,11 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import uk.gov.hmcts.ccd.sdk.api.CaseDetails; +import uk.gov.hmcts.ccd.sdk.api.Event.EventBuilder; import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse; import uk.gov.hmcts.ccd.sdk.type.YesOrNo; -import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; -import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; +import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.UserRole; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; import uk.gov.hmcts.reform.pcs.ccd.domain.State; import uk.gov.hmcts.reform.pcs.postcodecourt.exception.EligibilityCheckException; import uk.gov.hmcts.reform.pcs.postcodecourt.model.EligibilityResult; @@ -24,19 +24,18 @@ @AllArgsConstructor @Component @Slf4j -public class CrossBorderPostcodeSelection implements CcdPageConfiguration { +public class CrossBorderPostcodeSelection { private final EligibilityService eligibilityService; - @Override - public void addTo(PageBuilder pageBuilder) { - pageBuilder + public void addTo(EventBuilder eventBuilder) { + eventBuilder.fields() .page("crossBorderPostcodeSelection", this::midEvent) .pageLabel("Border postcode") .showCondition("showCrossBorderPage=\"Yes\"") - .readonly(PCSCase::getShowCrossBorderPage, NEVER_SHOW) - .readonly(PCSCase::getCrossBorderCountry1, NEVER_SHOW, true) - .readonly(PCSCase::getCrossBorderCountry2, NEVER_SHOW, true) + .readonly(CreateClaimData::getShowCrossBorderPage, NEVER_SHOW) + .readonly(CreateClaimData::getCrossBorderCountry1, NEVER_SHOW, true) + .readonly(CreateClaimData::getCrossBorderCountry2, NEVER_SHOW, true) .label("crossBorderPostcodeSelection-info", """ ---
@@ -61,16 +60,17 @@ public void addTo(PageBuilder pageBuilder) {
""") - .mandatory(PCSCase::getCrossBorderCountriesList, + .mandatory(CreateClaimData::getCrossBorderCountriesList, null, null, "Is the property located in ${crossBorderCountry1} or ${crossBorderCountry2}?"); } - private AboutToStartOrSubmitResponse midEvent(CaseDetails details, - CaseDetails detailsBefore) { + private AboutToStartOrSubmitResponse midEvent( + CaseDetails details, + CaseDetails detailsBefore) { - PCSCase caseData = details.getData(); + CreateClaimData caseData = details.getData(); String postcode = getPostcode(caseData); String countryCode = getSelectedCountryCode(caseData); @@ -131,16 +131,16 @@ private AboutToStartOrSubmitResponse midEvent(CaseDetails response(PCSCase caseData) { - return AboutToStartOrSubmitResponse.builder() + private AboutToStartOrSubmitResponse response(CreateClaimData caseData) { + return AboutToStartOrSubmitResponse.builder() .data(caseData) .build(); } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/EnterPropertyAddress.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/EnterPropertyAddress.java index 80147274e0..0fa1665f15 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/EnterPropertyAddress.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/EnterPropertyAddress.java @@ -4,17 +4,16 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import uk.gov.hmcts.ccd.sdk.api.CaseDetails; +import uk.gov.hmcts.ccd.sdk.api.Event.EventBuilder; import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse; import uk.gov.hmcts.ccd.sdk.type.AddressUK; import uk.gov.hmcts.ccd.sdk.type.YesOrNo; -import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; -import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; +import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.UserRole; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; import uk.gov.hmcts.reform.pcs.ccd.domain.State; import uk.gov.hmcts.reform.pcs.ccd.service.AddressValidator; import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringList; import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringListElement; -import uk.gov.hmcts.reform.pcs.ccd.util.StringUtils; import uk.gov.hmcts.reform.pcs.postcodecourt.exception.EligibilityCheckException; import uk.gov.hmcts.reform.pcs.postcodecourt.model.EligibilityResult; import uk.gov.hmcts.reform.pcs.postcodecourt.model.LegislativeCountry; @@ -27,18 +26,17 @@ @AllArgsConstructor @Component @Slf4j -public class EnterPropertyAddress implements CcdPageConfiguration { +public class EnterPropertyAddress { private final EligibilityService eligibilityService; private final AddressValidator addressValidator; - @Override - public void addTo(PageBuilder pageBuilder) { - pageBuilder + public void addTo(EventBuilder eventBuilder) { + eventBuilder.fields() .page("enterPropertyAddress", this::midEvent) .pageLabel("What is the address of the property you’re claiming possession of?") .label("enterPropertyAddress-lineSeparator", "---") - .complex(PCSCase::getPropertyAddress) + .complex(CreateClaimData::getPropertyAddress) .mandatory(AddressUK::getAddressLine1) .optional(AddressUK::getAddressLine2) .optional(AddressUK::getAddressLine3) @@ -47,20 +45,21 @@ public void addTo(PageBuilder pageBuilder) { .optional(AddressUK::getCountry) .mandatoryWithLabel(AddressUK::getPostCode, "Postcode") .done() - .readonly(PCSCase::getLegislativeCountry, NEVER_SHOW, true); + .readonly(CreateClaimData::getLegislativeCountry, NEVER_SHOW, true); } - private AboutToStartOrSubmitResponse midEvent(CaseDetails details, - CaseDetails detailsBefore) { + private AboutToStartOrSubmitResponse midEvent( + CaseDetails details, + CaseDetails detailsBefore) { - PCSCase caseData = details.getData(); + CreateClaimData caseData = details.getData(); AddressUK propertyAddress = caseData.getPropertyAddress(); List validationErrors = addressValidator.validateAddressFields(propertyAddress); if (!validationErrors.isEmpty()) { - return AboutToStartOrSubmitResponse.builder() - .errorMessageOverride(StringUtils.joinIfNotEmpty("\n", validationErrors)) + return AboutToStartOrSubmitResponse.builder() + .errors(validationErrors) .build(); } @@ -99,7 +98,7 @@ private AboutToStartOrSubmitResponse midEvent(CaseDetailsbuilder() + return AboutToStartOrSubmitResponse.builder() .data(caseData) .build(); } @@ -115,7 +114,7 @@ private void validateLegislativeCountries(List legislativeCo } } - private void setupCrossBorderData(PCSCase caseData, List legislativeCountries) { + private void setupCrossBorderData(CreateClaimData caseData, List legislativeCountries) { caseData.setShowCrossBorderPage(YesOrNo.YES); List crossBorderCountries = diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PostcodeNotAssignedToCourt.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PostcodeNotAssignedToCourt.java index 2c8682b253..705174552f 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PostcodeNotAssignedToCourt.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PostcodeNotAssignedToCourt.java @@ -4,32 +4,33 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import uk.gov.hmcts.ccd.sdk.api.CaseDetails; +import uk.gov.hmcts.ccd.sdk.api.Event.EventBuilder; import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse; -import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; -import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; +import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.UserRole; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; import uk.gov.hmcts.reform.pcs.ccd.domain.State; +import java.util.List; + import static uk.gov.hmcts.reform.pcs.ccd.ShowConditions.NEVER_SHOW; @AllArgsConstructor @Component @Slf4j -public class PostcodeNotAssignedToCourt implements CcdPageConfiguration { +public class PostcodeNotAssignedToCourt { private static final String SHOW_PAGE = "showPostcodeNotAssignedToCourt=\"Yes\""; private static final String SHOW_ENGLAND = SHOW_PAGE + " AND postcodeNotAssignedView=\"ENGLAND\""; private static final String SHOW_WALES = SHOW_PAGE + " AND postcodeNotAssignedView=\"WALES\""; private static final String SHOW_ALL = SHOW_PAGE + " AND postcodeNotAssignedView=\"ALL_COUNTRIES\""; - @Override - public void addTo(PageBuilder pageBuilder) { - pageBuilder + public void addTo(EventBuilder eventBuilder) { + eventBuilder.fields() .page("postcodeNotAssignedToCourt", this::midEvent) .pageLabel("You cannot use this online service") .showCondition(SHOW_PAGE) - .readonly(PCSCase::getShowPostcodeNotAssignedToCourt, NEVER_SHOW) - .readonly(PCSCase::getPostcodeNotAssignedView, NEVER_SHOW) + .readonly(CreateClaimData::getShowPostcodeNotAssignedToCourt, NEVER_SHOW) + .readonly(CreateClaimData::getPostcodeNotAssignedView, NEVER_SHOW) .label( "postcodeNotAssignedToCourt-header", """ @@ -108,10 +109,11 @@ Enforcement of Judgments Office (EJO) (opens in new tab). FOOTER); } - private AboutToStartOrSubmitResponse midEvent(CaseDetails details, - CaseDetails detailsBefore) { - return AboutToStartOrSubmitResponse.builder() - .errorMessageOverride("Property not eligible for this online service") + private AboutToStartOrSubmitResponse midEvent( + CaseDetails details, + CaseDetails detailsBefore) { + return AboutToStartOrSubmitResponse.builder() + .errors(List.of("Property not eligible for this online service")) .build(); } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PropertyNotEligible.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PropertyNotEligible.java index 11ff511ea5..3f54c28e77 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PropertyNotEligible.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PropertyNotEligible.java @@ -4,12 +4,14 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import uk.gov.hmcts.ccd.sdk.api.CaseDetails; +import uk.gov.hmcts.ccd.sdk.api.Event.EventBuilder; import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse; -import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; -import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; +import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.UserRole; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; import uk.gov.hmcts.reform.pcs.ccd.domain.State; +import java.util.List; + import static uk.gov.hmcts.reform.pcs.ccd.ShowConditions.NEVER_SHOW; /** @@ -19,15 +21,14 @@ @AllArgsConstructor @Component @Slf4j -public class PropertyNotEligible implements CcdPageConfiguration { +public class PropertyNotEligible { - @Override - public void addTo(PageBuilder pageBuilder) { - pageBuilder + public void addTo(EventBuilder eventBuilder) { + eventBuilder.fields() .page("propertyNotEligible", this::midEvent) .pageLabel("Property not eligible for this online service") .showCondition("showPropertyNotEligiblePage=\"Yes\"") - .readonly(PCSCase::getShowPropertyNotEligiblePage, NEVER_SHOW) + .readonly(CreateClaimData::getShowPropertyNotEligiblePage, NEVER_SHOW) // England and Wales guidance section .label("propertyNotEligible-england-wales", """ @@ -135,11 +136,11 @@ View the full list of property possessions forms (opens in new tab) """, "legislativeCountry=\"Channel Islands\" OR legislativeCountry=\"Isle of Man\""); } - - private AboutToStartOrSubmitResponse midEvent(CaseDetails details, - CaseDetails detailsBefore) { - return AboutToStartOrSubmitResponse.builder() - .errorMessageOverride("Property not eligible for this online service") + private AboutToStartOrSubmitResponse midEvent( + CaseDetails details, + CaseDetails detailsBefore) { + return AboutToStartOrSubmitResponse.builder() + .errors(List.of("Property not eligible for this online service")) .build(); } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/StartTheService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/StartTheService.java index cc611ad3ec..e945cdfce2 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/StartTheService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/StartTheService.java @@ -1,19 +1,19 @@ package uk.gov.hmcts.reform.pcs.ccd.page.createpossessionclaim; -import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; -import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; +import uk.gov.hmcts.ccd.sdk.api.Event.EventBuilder; +import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.UserRole; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; +import uk.gov.hmcts.reform.pcs.ccd.domain.State; import static uk.gov.hmcts.reform.pcs.ccd.ShowConditions.NEVER_SHOW; /** * CCD page configuration for making a housing possession claim online. */ -public class StartTheService implements CcdPageConfiguration { +public class StartTheService { - @Override - public void addTo(PageBuilder pageBuilder) { - pageBuilder + public void addTo(EventBuilder eventBuilder) { + eventBuilder.fields() .page("startTheService") .label("mainContent", "

Make a housing possession claim online

" @@ -49,6 +49,6 @@ public void addTo(PageBuilder pageBuilder) { + "can then return to sign, submit and pay at a later date" + "" ) - .readonly(PCSCase::getFeeAmount, NEVER_SHOW, true); + .readonly(CreateClaimData::getFeeAmount, NEVER_SHOW, true); } } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/util/FeeApplier.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/util/FeeApplier.java index 369b12687e..8d20387a28 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/util/FeeApplier.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/util/FeeApplier.java @@ -3,12 +3,11 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.feesandpay.model.FeeType; import uk.gov.hmcts.reform.pcs.feesandpay.service.FeeService; import java.math.BigDecimal; -import java.util.function.BiConsumer; +import java.util.function.Consumer; @Slf4j @Component @@ -20,14 +19,14 @@ public class FeeApplier { private final FeeService feeService; private final MoneyFormatter moneyFormatter; - public void applyFeeAmount(PCSCase pcsCase, FeeType feeType, BiConsumer setter) { + public void applyFeeAmount(FeeType feeType, Consumer setter) { try { BigDecimal feeAmount = feeService.getFee(feeType).getFeeAmount(); String formatted = moneyFormatter.formatFee(feeAmount); - setter.accept(pcsCase, formatted != null ? formatted : UNABLE_TO_RETRIEVE); + setter.accept(formatted != null ? formatted : UNABLE_TO_RETRIEVE); } catch (Exception e) { log.error("Error while getting {} fee", feeType.name(), e); - setter.accept(pcsCase, UNABLE_TO_RETRIEVE); + setter.accept(UNABLE_TO_RETRIEVE); } } } diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/event/enforcetheorder/EnforceTheOrderTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/event/enforcetheorder/EnforceTheOrderTest.java index 0873de9c3a..808ff8d332 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/event/enforcetheorder/EnforceTheOrderTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/event/enforcetheorder/EnforceTheOrderTest.java @@ -34,7 +34,7 @@ import java.util.ArrayList; import java.util.List; -import java.util.function.BiConsumer; +import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Stream; @@ -282,12 +282,10 @@ void shouldSetFeeAmountOnStart(FeeType fee, Function f String expectedFormattedFee = "£" + (1 + FEE_AMOUNT); doAnswer(invocation -> { - PCSCase pcs = invocation.getArgument(0); - BiConsumer setter = invocation.getArgument(2); - setter.accept(pcs, expectedFormattedFee); + Consumer setter = invocation.getArgument(1); + setter.accept(expectedFormattedFee); return null; }).when(feeApplier).applyFeeAmount( - any(PCSCase.class), any(FeeType.class), any() ); @@ -297,7 +295,7 @@ void shouldSetFeeAmountOnStart(FeeType fee, Function f // Then assertThat(feeGetter.apply(result.getEnforcementOrder())).isEqualTo(expectedFormattedFee); - verify(feeApplier).applyFeeAmount(eq(caseData), eq(fee), any()); + verify(feeApplier).applyFeeAmount(eq(fee), any()); } @ParameterizedTest @@ -308,16 +306,14 @@ void shouldSetDefaultFeeWhenFeeServiceFails(FeeType fee, Function { - PCSCase pcs = invocation.getArgument(0); - BiConsumer setter = invocation.getArgument(2); + Consumer setter = invocation.getArgument(1); try { throw new RuntimeException("Fee not found"); } catch (RuntimeException e) { - setter.accept(pcs, expectedFeesMessage); + setter.accept(expectedFeesMessage); } return null; }).when(feeApplier).applyFeeAmount( - eq(caseData), any(FeeType.class), any()); @@ -326,7 +322,7 @@ void shouldSetDefaultFeeWhenFeeServiceFails(FeeType fee, Function enforcementFeeScenarios() { diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/BasePageTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/BasePageTest.java index 383dab3bc1..d05e5efb46 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/BasePageTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/BasePageTest.java @@ -15,6 +15,7 @@ import java.util.Collection; import java.util.Map; +import java.util.function.Consumer; import static org.assertj.core.api.Assertions.assertThat; @@ -23,12 +24,25 @@ public abstract class BasePageTest { protected static final long TEST_CASE_REFERENCE = 1234L; private static final String TEST_EVENT_ID = "test-event"; + private static final String TEST_FIELD_PREFIX = "tst"; protected Event event; protected void setPageUnderTest(CcdPageConfiguration pageUnderTest) { event = buildPageInTestEvent(pageUnderTest); } + protected void setDtoPageUnderTest(Class dtoClass, + Consumer> pageSetup) { + ConfigBuilderImpl configBuilder = createConfigBuilder(); + Event.EventBuilder eventBuilder = configBuilder + .decentralisedEvent(TEST_EVENT_ID, dtoClass, TEST_FIELD_PREFIX, null) + .forAllStates(); + pageSetup.accept(eventBuilder); + ResolvedCCDConfig resolvedCCDConfig = configBuilder.build(); + event = resolvedCCDConfig.getEvents().get(TEST_EVENT_ID); + assertThat(event).isNotNull(); + } + protected AboutToStartOrSubmitResponse callMidEventHandler(PCSCase caseData) { CaseDetails caseDetails = CaseDetails.builder() .id(TEST_CASE_REFERENCE) @@ -38,6 +52,17 @@ protected AboutToStartOrSubmitResponse callMidEventHandler(PCSCa return getMidEventForPage().handle(caseDetails, null); } + @SuppressWarnings("unchecked") + protected AboutToStartOrSubmitResponse callDtoMidEventHandler(D caseData) { + CaseDetails caseDetails = CaseDetails.builder() + .id(TEST_CASE_REFERENCE) + .data(caseData) + .build(); + + MidEvent midEvent = (MidEvent) getMidEventForPage(); + return midEvent.handle(caseDetails, null); + } + private Event buildPageInTestEvent(CcdPageConfiguration page) { ConfigBuilderImpl configBuilder = createConfigBuilder(); Event.EventBuilder eventBuilder = createEventBuilder(configBuilder); @@ -67,7 +92,7 @@ private static Event.EventBuilder createEventBuilder( .forAllStates(); } - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings("unchecked") private MidEvent getMidEventForPage() { Collection midEventHandlers = getEvent().getFields().getPagesToMidEvent().values(); diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/CrossBorderPostcodeSelectionTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/CrossBorderPostcodeSelectionTest.java index e682c75aad..44f41b1f29 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/CrossBorderPostcodeSelectionTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/CrossBorderPostcodeSelectionTest.java @@ -13,8 +13,8 @@ import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse; import uk.gov.hmcts.ccd.sdk.type.AddressUK; import uk.gov.hmcts.ccd.sdk.type.YesOrNo; -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.ccd.domain.State; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; import uk.gov.hmcts.reform.pcs.ccd.page.BasePageTest; import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringList; import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringListElement; @@ -39,7 +39,8 @@ class CrossBorderPostcodeSelectionTest extends BasePageTest { @BeforeEach void setUp() { - setPageUnderTest(new CrossBorderPostcodeSelection(eligibilityService)); + CrossBorderPostcodeSelection page = new CrossBorderPostcodeSelection(eligibilityService); + setDtoPageUnderTest(CreateClaimData.class, page::addTo); } @ParameterizedTest @@ -53,7 +54,7 @@ void shouldSetLegislativeCountryWhenEligibilityMatchFound(EligibilityStatus elig .postCode(postCode) .build(); - PCSCase caseData = PCSCase.builder() + CreateClaimData caseData = CreateClaimData.builder() .propertyAddress(propertyAddress) .crossBorderCountriesList(createCountryListWithSelectedValue(expectedLegislativeCountry)) .build(); @@ -66,7 +67,7 @@ void shouldSetLegislativeCountryWhenEligibilityMatchFound(EligibilityStatus elig when(eligibilityService.checkEligibility(postCode, expectedLegislativeCountry)).thenReturn(eligibilityResult); // When - callMidEventHandler(caseData); + callDtoMidEventHandler(caseData); // Then assertThat(caseData.getLegislativeCountry()).isEqualTo(expectedLegislativeCountry); @@ -80,7 +81,7 @@ void shouldLogEligibilityBasedOnCountrySelection( EligibilityStatus status) { // Given - PCSCase caseData = PCSCase.builder() + CreateClaimData caseData = CreateClaimData.builder() .propertyAddress(AddressUK.builder().postCode(postcode).build()) .crossBorderCountriesList(createCountryListWithSelectedValue(selectedCountry)) .build(); @@ -93,11 +94,11 @@ void shouldLogEligibilityBasedOnCountrySelection( .thenReturn(eligibilityResult); // When - AboutToStartOrSubmitResponse response = callMidEventHandler(caseData); + AboutToStartOrSubmitResponse response = callDtoMidEventHandler(caseData); // Then assertThat(response).isNotNull(); - PCSCase resultData = response.getData(); + CreateClaimData resultData = response.getData(); assertThat(resultData).isNotNull(); if (status == EligibilityStatus.NO_MATCH_FOUND) { @@ -151,7 +152,6 @@ private static DynamicStringList createCountryListWithSelectedValue(LegislativeC @Test @DisplayName("Should not show Property Not Eligible page if property is eligible") void shouldNotShowNotEligibleOrNotAssignedPagesIfPropertyIsEligible() { - // Given: page visible (from MakeAClaim), PNE hidden var caseData = buildCrossBorderCaseWithFlags(LegislativeCountry.WALES); @@ -163,7 +163,7 @@ void shouldNotShowNotEligibleOrNotAssignedPagesIfPropertyIsEligible() { .thenReturn(result); // When - AboutToStartOrSubmitResponse resp = callMidEventHandler(caseData); + AboutToStartOrSubmitResponse resp = callDtoMidEventHandler(caseData); // Then var data = resp.getData(); @@ -176,7 +176,6 @@ void shouldNotShowNotEligibleOrNotAssignedPagesIfPropertyIsEligible() { @DisplayName("NOT_ELIGIBLE shows PropertyNotEligible and keeps cross-border page visible") void shouldShowPropertyNotEligiblePageWhenCrossBorderPropertyIsNotEligible( LegislativeCountry selectedCountry) { - // Given: page visible (from MakeAClaim), PNE hidden var caseData = buildCrossBorderCaseWithFlags( selectedCountry @@ -190,7 +189,7 @@ void shouldShowPropertyNotEligiblePageWhenCrossBorderPropertyIsNotEligible( .thenReturn(result); // When - AboutToStartOrSubmitResponse resp = callMidEventHandler(caseData); + AboutToStartOrSubmitResponse resp = callDtoMidEventHandler(caseData); // Then: show PNE, keep cross-border for 'Previous' var data = resp.getData(); @@ -205,7 +204,7 @@ private static Stream eligibleCountries() { ); } - private PCSCase buildCrossBorderCaseWithFlags(LegislativeCountry selectedCountry) { + private CreateClaimData buildCrossBorderCaseWithFlags(LegislativeCountry selectedCountry) { var selected = DynamicStringListElement.builder() .code(selectedCountry.name()) @@ -216,11 +215,10 @@ private PCSCase buildCrossBorderCaseWithFlags(LegislativeCountry selectedCountry .value(selected) .build(); - return PCSCase.builder() + return CreateClaimData.builder() .propertyAddress(AddressUK.builder().postCode(CrossBorderPostcodeSelectionTest.SOME_POSTCODE).build()) .crossBorderCountriesList(dynamicStringList) .showCrossBorderPage(YesOrNo.YES) .build(); } - } diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/EnterPropertyAddressTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/EnterPropertyAddressTest.java index 325f76bf9c..788585a428 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/EnterPropertyAddressTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/EnterPropertyAddressTest.java @@ -12,8 +12,8 @@ import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse; import uk.gov.hmcts.ccd.sdk.type.AddressUK; import uk.gov.hmcts.ccd.sdk.type.YesOrNo; -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.ccd.domain.State; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; import uk.gov.hmcts.reform.pcs.ccd.page.BasePageTest; import uk.gov.hmcts.reform.pcs.ccd.service.AddressValidator; import uk.gov.hmcts.reform.pcs.postcodecourt.exception.EligibilityCheckException; @@ -49,7 +49,8 @@ class EnterPropertyAddressTest extends BasePageTest { @BeforeEach void setUp() { - setPageUnderTest(new EnterPropertyAddress(eligibilityService, addressValidator)); + EnterPropertyAddress page = new EnterPropertyAddress(eligibilityService, addressValidator); + setDtoPageUnderTest(CreateClaimData.class, page::addTo); } @ParameterizedTest @@ -63,7 +64,7 @@ void shouldSetLegislativeCountryWhenEligibilityMatchFound(EligibilityStatus elig .postCode(postCode) .build(); - PCSCase caseData = PCSCase.builder() + CreateClaimData caseData = CreateClaimData.builder() .propertyAddress(propertyAddress) .build(); @@ -75,7 +76,7 @@ void shouldSetLegislativeCountryWhenEligibilityMatchFound(EligibilityStatus elig when(eligibilityService.checkEligibility(postCode, null)).thenReturn(eligibilityResult); // When - callMidEventHandler(caseData); + callDtoMidEventHandler(caseData); // Then assertThat(caseData.getLegislativeCountry()).isEqualTo(expectedLegislativeCountry); @@ -96,7 +97,7 @@ void shouldHandlePostcodeEligibilityCheck( .postCode(postcode) .build(); - PCSCase caseData = PCSCase.builder() + CreateClaimData caseData = CreateClaimData.builder() .propertyAddress(propertyAddress) .legislativeCountry(SCOTLAND) .build(); @@ -109,9 +110,10 @@ void shouldHandlePostcodeEligibilityCheck( when(eligibilityService.checkEligibility(postcode, null)).thenReturn(eligibilityResult); // When - AboutToStartOrSubmitResponse response = callMidEventHandler(caseData); + AboutToStartOrSubmitResponse response = callDtoMidEventHandler(caseData); + // Then - PCSCase resultData = response.getData(); + CreateClaimData resultData = response.getData(); assertThat(resultData.getShowCrossBorderPage()).isEqualTo(expectedShowCrossBorder); if (status == EligibilityStatus.NO_MATCH_FOUND) { @@ -141,7 +143,7 @@ void shouldThrowExceptionWhenLegislativeCountryRequiredButInvalidCountries( .postCode(postcode) .build(); - PCSCase caseData = PCSCase.builder() + CreateClaimData caseData = CreateClaimData.builder() .propertyAddress(propertyAddress) .build(); @@ -153,7 +155,7 @@ void shouldThrowExceptionWhenLegislativeCountryRequiredButInvalidCountries( when(eligibilityService.checkEligibility(postcode, null)).thenReturn(eligibilityResult); // When & Then - assertThatThrownBy(() -> callMidEventHandler(caseData)) + assertThatThrownBy(() -> callDtoMidEventHandler(caseData)) .isInstanceOf(EligibilityCheckException.class) .hasMessageContaining("Expected at least 2 legislative countries") .hasMessageContaining(expectedMessageFragment) @@ -164,7 +166,7 @@ void shouldThrowExceptionWhenLegislativeCountryRequiredButInvalidCountries( void shouldNotShowPropertyNotEligibleOrCrossBorderPagesOnEligible() { // Given AddressUK propertyAddress = AddressUK.builder().postCode("M1 1AA").build(); - PCSCase caseData = PCSCase.builder().propertyAddress(propertyAddress).build(); + CreateClaimData caseData = CreateClaimData.builder().propertyAddress(propertyAddress).build(); var result = EligibilityResult.builder() .status(EligibilityStatus.ELIGIBLE) @@ -174,10 +176,10 @@ void shouldNotShowPropertyNotEligibleOrCrossBorderPagesOnEligible() { when(eligibilityService.checkEligibility("M1 1AA", null)).thenReturn(result); // When - AboutToStartOrSubmitResponse resp = callMidEventHandler(caseData); + AboutToStartOrSubmitResponse resp = callDtoMidEventHandler(caseData); // Then - PCSCase data = resp.getData(); + CreateClaimData data = resp.getData(); assertThat(data.getShowCrossBorderPage()).isEqualTo(YesOrNo.NO); assertThat(data.getShowPropertyNotEligiblePage()).isEqualTo(YesOrNo.NO); } @@ -186,7 +188,7 @@ void shouldNotShowPropertyNotEligibleOrCrossBorderPagesOnEligible() { void shouldShowPropertyNotEligiblePageOnNotEligible() { // Given AddressUK propertyAddress = AddressUK.builder().postCode("M1 1AA").build(); - PCSCase caseData = PCSCase.builder().propertyAddress(propertyAddress).build(); + CreateClaimData caseData = CreateClaimData.builder().propertyAddress(propertyAddress).build(); var result = EligibilityResult.builder() .status(EligibilityStatus.NOT_ELIGIBLE) @@ -196,10 +198,10 @@ void shouldShowPropertyNotEligiblePageOnNotEligible() { when(eligibilityService.checkEligibility("M1 1AA", null)).thenReturn(result); // When - AboutToStartOrSubmitResponse resp = callMidEventHandler(caseData); + AboutToStartOrSubmitResponse resp = callDtoMidEventHandler(caseData); // Then - PCSCase data = resp.getData(); + CreateClaimData data = resp.getData(); assertThat(data.getShowCrossBorderPage()).isEqualTo(YesOrNo.NO); assertThat(data.getShowPropertyNotEligiblePage()).isEqualTo(YesOrNo.YES); } @@ -208,7 +210,7 @@ void shouldShowPropertyNotEligiblePageOnNotEligible() { void shouldReturnValidationErrorsWhenAddressInvalid() { // Given AddressUK propertyAddress = mock(AddressUK.class); - PCSCase caseData = PCSCase.builder() + CreateClaimData caseData = CreateClaimData.builder() .propertyAddress(propertyAddress) .build(); @@ -216,10 +218,10 @@ void shouldReturnValidationErrorsWhenAddressInvalid() { when(addressValidator.validateAddressFields(propertyAddress)).thenReturn(validationErrors); // When - AboutToStartOrSubmitResponse response = callMidEventHandler(caseData); + AboutToStartOrSubmitResponse response = callDtoMidEventHandler(caseData); // Then - assertThat(response.getErrorMessageOverride()).isEqualTo("error 1\nerror 2"); + assertThat(response.getErrors()).containsExactly("error 1", "error 2"); } private static Stream invalidLegislativeCountryScenarios() { diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PostcodeNotAssignedToCourtTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PostcodeNotAssignedToCourtTest.java index 4b900874cd..6f3ffb717e 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PostcodeNotAssignedToCourtTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/createpossessionclaim/PostcodeNotAssignedToCourtTest.java @@ -12,9 +12,8 @@ import uk.gov.hmcts.ccd.sdk.api.Event.EventBuilder; import uk.gov.hmcts.ccd.sdk.api.FieldCollection.FieldCollectionBuilder; import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.UserRole; -import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; -import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.ccd.domain.State; +import uk.gov.hmcts.reform.pcs.ccd.dto.CreateClaimData; import java.util.stream.Stream; @@ -30,11 +29,10 @@ class PostcodeNotAssignedToCourtTest { @Mock - private EventBuilder eventBuilder; + private EventBuilder eventBuilder; @Mock - private FieldCollectionBuilder> fieldBuilder; + private FieldCollectionBuilder> fieldBuilder; - private PageBuilder pageBuilder; private PostcodeNotAssignedToCourt underTest; @BeforeEach @@ -47,14 +45,13 @@ void setUp() { when(fieldBuilder.label(anyString(), anyString())).thenReturn(fieldBuilder); when(fieldBuilder.label(anyString(), anyString(), anyString())).thenReturn(fieldBuilder); - pageBuilder = new PageBuilder(eventBuilder); underTest = new PostcodeNotAssignedToCourt(); } @Test @DisplayName("Should build page configuration successfully") void shouldBuildPageConfigurationSuccessfully() { - underTest.addTo(pageBuilder); + underTest.addTo(eventBuilder); verify(fieldBuilder).page(eq("postcodeNotAssignedToCourt"), any()); verify(fieldBuilder).pageLabel(eq("You cannot use this online service")); @@ -64,7 +61,7 @@ void shouldBuildPageConfigurationSuccessfully() { @MethodSource("showConditionScenarios") @DisplayName("Should apply correct show conditions for different views") void shouldApplyCorrectShowConditions(String expectedShowCondition, String expectedLabelId) { - underTest.addTo(pageBuilder); + underTest.addTo(eventBuilder); // Verify the main show condition is set verify(fieldBuilder).showCondition(eq("showPostcodeNotAssignedToCourt=\"Yes\"")); diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/util/FeeApplierTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/util/FeeApplierTest.java index aae0db69f5..43889373b2 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/util/FeeApplierTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/util/FeeApplierTest.java @@ -14,7 +14,6 @@ import uk.gov.hmcts.reform.pcs.feesandpay.service.FeeService; import java.math.BigDecimal; -import java.util.function.BiConsumer; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.verify; @@ -49,11 +48,8 @@ void shouldSetFormattedFeeWhenFeeServiceReturnsFee() { .feeAmount(feeAmount) .build() ); - BiConsumer setter = (caseData, fee) -> caseData - .getEnforcementOrder().setWarrantFeeAmount(fee); - // When - underTest.applyFeeAmount(pcsCase, feeType, setter); + underTest.applyFeeAmount(feeType, pcsCase.getEnforcementOrder()::setWarrantFeeAmount); // Then verify(feeService).getFee(feeType); @@ -71,11 +67,8 @@ void shouldSetDefaultFeeWhenFeeServiceThrows() { when(feeService.getFee(feeType)) .thenThrow(new RuntimeException("Fee service error")); - BiConsumer setter = (caseData, fee) -> caseData - .getEnforcementOrder().setWarrantFeeAmount(fee); - // When - underTest.applyFeeAmount(pcsCase, feeType, setter); + underTest.applyFeeAmount(feeType, pcsCase.getEnforcementOrder()::setWarrantFeeAmount); // Then verify(feeService).getFee(feeType); @@ -93,10 +86,8 @@ void shouldSetUnableToRetrieveWhenFeeServiceReturnsNull() { when(feeService.getFee(feeType)).thenReturn(feeDetails); - BiConsumer setter = PCSCase::setFeeAmount; - // When - underTest.applyFeeAmount(pcsCase, feeType, setter); + underTest.applyFeeAmount(feeType, pcsCase::setFeeAmount); // Then verify(feeService).getFee(feeType);