diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/DefendantResponses.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/DefendantResponses.java index 904b614a22..4595b11f34 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/DefendantResponses.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/DefendantResponses.java @@ -6,6 +6,7 @@ import lombok.NoArgsConstructor; import uk.gov.hmcts.ccd.sdk.api.CCD; import uk.gov.hmcts.ccd.sdk.type.FieldType; +import uk.gov.hmcts.ccd.sdk.type.YesOrNo; import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.CitizenAccess; import uk.gov.hmcts.reform.pcs.ccd.annotation.JacksonMoneyGBP; import uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo; @@ -75,7 +76,14 @@ public class DefendantResponses { @CCD private YesNoNotSure writtenTerms; - + + @CCD + private YesOrNo disputeClaim; + + @CCD + private String disputeClaimDetails; + + @CCD private YesNoNotSure landlordLicensed; @CCD(access = {CitizenAccess.class}) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/DefendantResponseService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/DefendantResponseService.java index 4e2bceaf15..1e1de50c76 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/DefendantResponseService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/DefendantResponseService.java @@ -121,6 +121,8 @@ private DefendantResponseEntity buildDefendantResponseEntity(ClaimEntity claimRe .defendantNameConfirmation(responses.getDefendantNameConfirmation()) .landlordRegistered(responses.getLandlordRegistered()) .writtenTerms(responses.getWrittenTerms()) + .disputeClaim(responses.getDisputeClaim()) + .disputeClaimDetails(responses.getDisputeClaimDetails()) .tenancyStartDateConfirmation(tenancyStartDateConfirmation) .tenancyStartDate( responses.getTenancyStartDate() != null && tenancyStartDateConfirmation != YesNoNotSure.NOT_SURE diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/DefendantResponseServiceTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/DefendantResponseServiceTest.java index 84bd80fdde..31d0acec3c 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/DefendantResponseServiceTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/DefendantResponseServiceTest.java @@ -661,4 +661,75 @@ private static Stream tenancyStartDateConfirmationScenarios() { ); } + + @ParameterizedTest(name = "disputeClaim={0}") + @MethodSource("disputeClaimPersistenceScenarios") + void shouldPersistDisputeClaim(YesOrNo disputeClaim) { + // Given + when(securityContextService.getCurrentUserId()).thenReturn(USER_ID); + when(defendantResponseRepository.existsByClaimPcsCaseCaseReferenceAndPartyIdamId( + CASE_REFERENCE, USER_ID)).thenReturn(false); + stubPartyLookup(); + stubClaimLookup(); + + DefendantResponses responses = DefendantResponses.builder() + .disputeClaim(disputeClaim) + .build(); + + PossessionClaimResponse possessionClaimResponse = PossessionClaimResponse.builder() + .defendantResponses(responses) + .build(); + + // When + underTest.saveDefendantResponse(CASE_REFERENCE, possessionClaimResponse); + + // Then + verify(defendantResponseRepository).save(responseCaptor.capture()); + DefendantResponseEntity savedResponse = responseCaptor.getValue(); + + assertThat(savedResponse.getDisputeClaim()).isEqualTo(disputeClaim); + } + + private static Stream disputeClaimPersistenceScenarios() { + return Stream.of( + Arguments.of(YesOrNo.YES), + Arguments.of(YesOrNo.NO), + Arguments.of((YesOrNo) null) + ); + } + + @ParameterizedTest(name = "disputeClaimDetails={0}") + @MethodSource("disputeClaimDetailsPersistenceScenarios") + void shouldPersistDisputeClaimDetails(String disputeClaimDetails) { + // Given + when(securityContextService.getCurrentUserId()).thenReturn(USER_ID); + when(defendantResponseRepository.existsByClaimPcsCaseCaseReferenceAndPartyIdamId( + CASE_REFERENCE, USER_ID)).thenReturn(false); + stubPartyLookup(); + stubClaimLookup(); + + DefendantResponses responses = DefendantResponses.builder() + .disputeClaimDetails(disputeClaimDetails) + .build(); + + PossessionClaimResponse possessionClaimResponse = PossessionClaimResponse.builder() + .defendantResponses(responses) + .build(); + + // When + underTest.saveDefendantResponse(CASE_REFERENCE, possessionClaimResponse); + + // Then + verify(defendantResponseRepository).save(responseCaptor.capture()); + DefendantResponseEntity savedResponse = responseCaptor.getValue(); + + assertThat(savedResponse.getDisputeClaimDetails()).isEqualTo(disputeClaimDetails); + } + + private static Stream disputeClaimDetailsPersistenceScenarios() { + return Stream.of( + Arguments.of("I dispute this claim because the rent has been paid in full"), + Arguments.of((String) null) + ); + } }