Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -17,4 +20,16 @@ public class HouseholdCircumstances {
@CCD
private YesOrNo dependantChildren;

@CCD
private YesOrNo otherTenants;

@CCD(max = 500)
private String otherTenantsDetails;

@CCD
private YesNoNotSure alternativeAccommodation;

@CCD
private LocalDate alternativeAccommodationTransferDate;

}
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -12,11 +14,16 @@ public HouseholdCircumstancesEntity createHouseholdCircumstancesEntity(Household
if (circumstances == null) {
return null;
}
YesOrNo otherTenants = circumstances.getOtherTenants();
YesNoNotSure alternativeAccommodation = circumstances.getAlternativeAccommodation();

HouseholdCircumstancesEntity householdCircumstancesEntity = HouseholdCircumstancesEntity.builder()
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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<Arguments> 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<Arguments> 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<Arguments> 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)
);
}
}
Loading