From 5875f6b6919ee9e3e377fc89e4df7a0dd3147b25 Mon Sep 17 00:00:00 2001 From: Liban Abdirahman Date: Tue, 24 Mar 2026 10:49:36 +0000 Subject: [PATCH 1/3] HDPI-3569:WIP --- .../HouseholdCircumstances.java | 15 +++++++++++++++ .../HouseholdCircumstancesService.java | 14 ++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/HouseholdCircumstances.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/HouseholdCircumstances.java index 63b5b90d92..2462fef713 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/HouseholdCircumstances.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/HouseholdCircumstances.java @@ -7,6 +7,9 @@ import lombok.NoArgsConstructor; import uk.gov.hmcts.ccd.sdk.api.CCD; import uk.gov.hmcts.ccd.sdk.type.YesOrNo; +import uk.gov.hmcts.reform.pcs.ccd.domain.YesNoNotSure; + +import java.time.LocalDate; @Builder @Data @@ -17,4 +20,16 @@ public class HouseholdCircumstances { @CCD private YesOrNo dependantChildren; + @CCD + private YesOrNo otherTenants; + + @CCD + private String otherTenantsDetails; + + @CCD + private YesNoNotSure alternativeAccommodation; + + @CCD + private LocalDate alternativeAccommodationTransferDate; + } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesService.java index 2c4ec07507..e9b5d1e328 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesService.java @@ -1,6 +1,8 @@ package uk.gov.hmcts.reform.pcs.ccd.service.respondpossessionclaim; import org.springframework.stereotype.Service; +import uk.gov.hmcts.ccd.sdk.type.YesOrNo; +import uk.gov.hmcts.reform.pcs.ccd.domain.YesNoNotSure; import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.HouseholdCircumstances; import uk.gov.hmcts.reform.pcs.ccd.entity.respondpossessionclaim.HouseholdCircumstancesEntity; @@ -12,11 +14,15 @@ public HouseholdCircumstancesEntity createHouseholdCircumstancesEntity(Household if (circumstances == null) { return null; } - - HouseholdCircumstancesEntity householdCircumstancesEntity = HouseholdCircumstancesEntity.builder() + YesOrNo otherTenants = circumstances.getOtherTenants(); + YesNoNotSure alternativeAccommodation = circumstances.getAlternativeAccommodation(); + return HouseholdCircumstancesEntity.builder() .dependantChildren(circumstances.getDependantChildren()) + .otherTenants(otherTenants) + .otherTenantsDetails(otherTenants == YesOrNo.YES ? circumstances.getOtherTenantsDetails() : null) + .alternativeAccommodation(alternativeAccommodation) + .alternativeAccommodationTransferDate(alternativeAccommodation == YesNoNotSure.YES + ? circumstances.getAlternativeAccommodationTransferDate() : null) .build(); - - return householdCircumstancesEntity; } } From e54d20b58220317c70f91eb6c57b27db2c6d1bd9 Mon Sep 17 00:00:00 2001 From: Liban Abdirahman Date: Tue, 24 Mar 2026 18:09:33 +0000 Subject: [PATCH 2/3] HDPI-3569:Added tests --- .../HouseholdCircumstancesService.java | 1 + .../HouseholdCircumstancesServiceTest.java | 119 +++++++++++++++--- 2 files changed, 103 insertions(+), 17 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesService.java index e9b5d1e328..be206c589d 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesService.java @@ -16,6 +16,7 @@ public HouseholdCircumstancesEntity createHouseholdCircumstancesEntity(Household } YesOrNo otherTenants = circumstances.getOtherTenants(); YesNoNotSure alternativeAccommodation = circumstances.getAlternativeAccommodation(); + return HouseholdCircumstancesEntity.builder() .dependantChildren(circumstances.getDependantChildren()) .otherTenants(otherTenants) diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesServiceTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesServiceTest.java index 3fc4c62e6f..c2b8df7f50 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesServiceTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/HouseholdCircumstancesServiceTest.java @@ -2,20 +2,21 @@ 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.Arguments; +import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.MethodSource; -import org.mockito.junit.jupiter.MockitoExtension; +import org.junit.jupiter.params.provider.NullSource; import uk.gov.hmcts.ccd.sdk.type.YesOrNo; +import uk.gov.hmcts.reform.pcs.ccd.domain.YesNoNotSure; import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.HouseholdCircumstances; import uk.gov.hmcts.reform.pcs.ccd.entity.respondpossessionclaim.HouseholdCircumstancesEntity; +import java.time.LocalDate; import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; -@ExtendWith(MockitoExtension.class) class HouseholdCircumstancesServiceTest { private HouseholdCircumstancesService underTest; @@ -26,37 +27,121 @@ void setUp() { } @ParameterizedTest - @MethodSource("dependantChildrenScenarios") + @NullSource + @EnumSource(YesOrNo.class) void shouldMapDependantChildrenField(YesOrNo expected) { - //Given + // Given HouseholdCircumstances householdCircumstances = HouseholdCircumstances.builder() .dependantChildren(expected) .build(); - //When + // When HouseholdCircumstancesEntity entity = underTest.createHouseholdCircumstancesEntity(householdCircumstances); - //Then - assertThat(entity).isNotNull(); + // Then assertThat(entity.getDependantChildren()).isEqualTo(expected); } - private static Stream dependantChildrenScenarios() { + @Test + void shouldReturnNullWhenPaymentAgreementIsNull() { + // When + HouseholdCircumstancesEntity entity = underTest.createHouseholdCircumstancesEntity(null); + + // Then + assertThat(entity).isNull(); + } + + @ParameterizedTest + @NullSource + @EnumSource(YesOrNo.class) + void shouldMapOtherTenantsField(YesOrNo expected) { + // Given + HouseholdCircumstances householdCircumstances = HouseholdCircumstances.builder() + .otherTenants(expected) + .build(); + + // When + HouseholdCircumstancesEntity entity = underTest.createHouseholdCircumstancesEntity(householdCircumstances); + + // Then + assertThat(entity.getOtherTenants()).isEqualTo(expected); + } + + @ParameterizedTest + @MethodSource("otherTenantsDetailsScenarios") + void shouldMapOtherTenantsDetailsOnlyWhenOtherTenantsIsYes( + YesOrNo expectedOtherTenants, + String draftDetails, + String expectedDetailsOnEntity + ) { + // Given + HouseholdCircumstances householdCircumstances = HouseholdCircumstances.builder() + .otherTenants(expectedOtherTenants) + .otherTenantsDetails(draftDetails) + .build(); + + // When + HouseholdCircumstancesEntity entity = underTest.createHouseholdCircumstancesEntity(householdCircumstances); + + // Then + assertThat(entity.getOtherTenants()).isEqualTo(expectedOtherTenants); + assertThat(entity.getOtherTenantsDetails()).isEqualTo(expectedDetailsOnEntity); + } + + private static Stream otherTenantsDetailsScenarios() { return Stream.of( - Arguments.of(YesOrNo.YES), - Arguments.of(YesOrNo.NO), - Arguments.of((YesOrNo) null) + Arguments.of(YesOrNo.YES, "Two other adults", "Two other adults"), + Arguments.of(YesOrNo.YES, null, null), + Arguments.of(YesOrNo.NO, "Draft still has text", null), + Arguments.of(null, "Draft still has text", null) ); } - @Test - void shouldReturnNullWhenHouseholdCircumstancesIsNull() { + @ParameterizedTest + @NullSource + @EnumSource(YesNoNotSure.class) + void shouldMapAlternativeAccommodationField(YesNoNotSure expected) { + // Given + HouseholdCircumstances householdCircumstances = HouseholdCircumstances.builder() + .alternativeAccommodation(expected) + .build(); + // When - HouseholdCircumstancesEntity entity = underTest.createHouseholdCircumstancesEntity(null); + HouseholdCircumstancesEntity entity = underTest.createHouseholdCircumstancesEntity(householdCircumstances); // Then - assertThat(entity).isNull(); + assertThat(entity.getAlternativeAccommodation()).isEqualTo(expected); } -} + @ParameterizedTest + @MethodSource("alternativeAccommodationTransferDateScenarios") + void shouldMapAlternativeAccommodationTransferDateAccordingToAccommodationAnswer( + YesNoNotSure expectedAlternativeAccommodation, + LocalDate draftDate, + LocalDate expectedDate + ) { + // Given + HouseholdCircumstances householdCircumstances = HouseholdCircumstances.builder() + .alternativeAccommodation(expectedAlternativeAccommodation) + .alternativeAccommodationTransferDate(draftDate) + .build(); + // When + HouseholdCircumstancesEntity entity = underTest.createHouseholdCircumstancesEntity(householdCircumstances); + + // Then + assertThat(entity.getAlternativeAccommodation()).isEqualTo(expectedAlternativeAccommodation); + assertThat(entity.getAlternativeAccommodationTransferDate()).isEqualTo(expectedDate); + } + + private static Stream alternativeAccommodationTransferDateScenarios() { + LocalDate transferDate = LocalDate.of(2025, 6, 1); + return Stream.of( + Arguments.of(YesNoNotSure.YES, transferDate, transferDate), + Arguments.of(YesNoNotSure.YES, null, null), + Arguments.of(YesNoNotSure.NO, transferDate, null), + Arguments.of(YesNoNotSure.NOT_SURE, transferDate, null), + Arguments.of(null, transferDate, null) + ); + } +} From 85f30b6fa196d9604a25300fa4055641e4e88747 Mon Sep 17 00:00:00 2001 From: Liban Abdirahman Date: Wed, 25 Mar 2026 11:25:43 +0000 Subject: [PATCH 3/3] HDPI-3569:Actioning minor review comment --- .../domain/respondpossessionclaim/HouseholdCircumstances.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/HouseholdCircumstances.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/HouseholdCircumstances.java index 2462fef713..e77ddaa7ff 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/HouseholdCircumstances.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/HouseholdCircumstances.java @@ -23,7 +23,7 @@ public class HouseholdCircumstances { @CCD private YesOrNo otherTenants; - @CCD + @CCD(max = 500) private String otherTenantsDetails; @CCD