Skip to content

Commit 29d3e29

Browse files
arun-hmctspaddy-hmctsmadhavi1203
authored andcommitted
HDPI-2661: Implement Rent Arrears page routing bugfix (#906)
Co-authored-by: Paddy Basi <[email protected]> Co-authored-by: madhavi1203 <[email protected]>
1 parent 8aec69e commit 29d3e29

File tree

48 files changed

+962
-509
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+962
-509
lines changed

src/e2eTest/tests/createCase.saveResume.spec.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ import {
3535
underlesseeOrMortgageeEntitledToClaim,
3636
user,
3737
wantToUploadDocuments,
38-
whatAreYourGroundsForPossession
38+
whatAreYourGroundsForPossession,
39+
detailsOfRentArrears
3940
} from '@data/page-data';
4041
import {
4142
initializeExecutor,
@@ -72,7 +73,7 @@ test.afterEach(async () => {
7273
});
7374

7475
test.describe('[Create Case - With resume claim options]', async () => {
75-
test('England - Resume with saved options - Assured Tentency - Rent arrears + other grounds when user selects no to rent arrears question', async () => {
76+
test('England - Resume with saved options - Assured Tenancy - Rent arrears + other grounds when user selects no to rent arrears question', async () => {
7677
await performAction('selectAddress', {
7778
postcode: addressDetails.englandCourtAssignedPostcodeTextInput,
7879
addressIndex: addressDetails.addressIndex
@@ -151,6 +152,13 @@ test.describe('[Create Case - With resume claim options]', async () => {
151152
unpaidRentInteractiveOption: dailyRentAmount.no,
152153
unpaidRentAmountPerDay: '20'
153154
});
155+
await performValidation('mainHeader', detailsOfRentArrears.mainHeader);
156+
await performAction('provideDetailsOfRentArrears', {
157+
files: ['rentArrears.pdf'],
158+
rentArrearsAmountOnStatement: '1000',
159+
rentPaidByOthersOption: detailsOfRentArrears.yes,
160+
paymentOptions: [detailsOfRentArrears.universalCreditOption, detailsOfRentArrears.paymentOtherOption]
161+
});
154162
await performValidation('mainHeader', moneyJudgment.mainHeader);
155163
await performAction('selectMoneyJudgment', moneyJudgment.yes);
156164
await performValidation('mainHeader', claimantCircumstances.mainHeader);
@@ -195,7 +203,7 @@ test.describe('[Create Case - With resume claim options]', async () => {
195203
)
196204
});
197205

198-
test('England - Resume without saved options - Secure Tentency - No Rent Arrears', async () => {
206+
test('England - Resume without saved options - Secure tenancy - No Rent Arrears', async () => {
199207
await performAction('selectAddress', {
200208
postcode: addressDetails.englandCourtAssignedPostcodeTextInput,
201209
addressIndex: addressDetails.addressIndex

src/e2eTest/tests/createCase.spec.ts

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,13 @@ test.describe('[Create Case - England] @regression', async () => {
149149
unpaidRentInteractiveOption: dailyRentAmount.no,
150150
unpaidRentAmountPerDay: '20'
151151
});
152+
await performValidation('mainHeader', detailsOfRentArrears.mainHeader);
153+
await performAction('provideDetailsOfRentArrears', {
154+
files: ['rentArrears.pdf'],
155+
rentArrearsAmountOnStatement: '1000',
156+
rentPaidByOthersOption: detailsOfRentArrears.yes,
157+
paymentOptions: [detailsOfRentArrears.universalCreditOption, detailsOfRentArrears.paymentOtherOption]
158+
});
152159
await performValidation('mainHeader', moneyJudgment.mainHeader);
153160
await performAction('selectMoneyJudgment', moneyJudgment.yes);
154161
await performValidation('mainHeader', claimantCircumstances.mainHeader);
@@ -267,6 +274,13 @@ test.describe('[Create Case - England] @regression', async () => {
267274
unpaidRentInteractiveOption: dailyRentAmount.no,
268275
unpaidRentAmountPerDay: '20'
269276
});
277+
await performValidation('mainHeader', detailsOfRentArrears.mainHeader);
278+
await performAction('provideDetailsOfRentArrears', {
279+
files: ['rentArrears.pdf'],
280+
rentArrearsAmountOnStatement: '1000',
281+
rentPaidByOthersOption: detailsOfRentArrears.yes,
282+
paymentOptions: [detailsOfRentArrears.universalCreditOption, detailsOfRentArrears.paymentOtherOption]
283+
});
270284
await performValidation('mainHeader', moneyJudgment.mainHeader);
271285
await performAction('selectMoneyJudgment', moneyJudgment.yes);
272286
await performValidation('mainHeader', claimantCircumstances.mainHeader);
@@ -487,6 +501,13 @@ test.describe('[Create Case - England] @regression', async () => {
487501
unpaidRentInteractiveOption: dailyRentAmount.no,
488502
unpaidRentAmountPerDay: '20'
489503
});
504+
await performValidation('mainHeader', detailsOfRentArrears.mainHeader);
505+
await performAction('provideDetailsOfRentArrears', {
506+
files: ['rentArrears.pdf'],
507+
rentArrearsAmountOnStatement: '1000',
508+
rentPaidByOthersOption: detailsOfRentArrears.yes,
509+
paymentOptions: [detailsOfRentArrears.universalCreditOption, detailsOfRentArrears.paymentOtherOption]
510+
});
490511
await performValidation('mainHeader', moneyJudgment.mainHeader);
491512
await performAction('selectMoneyJudgment', moneyJudgment.yes);
492513
await performValidation('mainHeader', claimantCircumstances.mainHeader);
@@ -898,6 +919,13 @@ test.describe('[Create Case - England] @regression', async () => {
898919
calculateRentAmount: '£32.85',
899920
unpaidRentInteractiveOption: dailyRentAmount.yes
900921
});
922+
await performValidation('mainHeader', detailsOfRentArrears.mainHeader);
923+
await performAction('provideDetailsOfRentArrears', {
924+
files: ['rentArrears.pdf'],
925+
rentArrearsAmountOnStatement: '1000',
926+
rentPaidByOthersOption: detailsOfRentArrears.yes,
927+
paymentOptions: [detailsOfRentArrears.universalCreditOption, detailsOfRentArrears.paymentOtherOption]
928+
});
901929
await performValidation('mainHeader', moneyJudgment.mainHeader);
902930
await performAction('selectMoneyJudgment', moneyJudgment.yes);
903931
await performValidation('mainHeader', claimantCircumstances.mainHeader);
@@ -1014,6 +1042,13 @@ test.describe('[Create Case - England] @regression', async () => {
10141042
calculateRentAmount: '£32.85',
10151043
unpaidRentInteractiveOption: dailyRentAmount.yes
10161044
});
1045+
await performValidation('mainHeader', detailsOfRentArrears.mainHeader);
1046+
await performAction('provideDetailsOfRentArrears', {
1047+
files: ['rentArrears.pdf'],
1048+
rentArrearsAmountOnStatement: '1000',
1049+
rentPaidByOthersOption: detailsOfRentArrears.yes,
1050+
paymentOptions: [detailsOfRentArrears.universalCreditOption, detailsOfRentArrears.paymentOtherOption]
1051+
});
10171052
await performValidation('mainHeader', moneyJudgment.mainHeader);
10181053
await performAction('selectMoneyJudgment', moneyJudgment.no);
10191054
await performValidation('mainHeader', claimantCircumstances.mainHeader);
@@ -1131,7 +1166,13 @@ test.describe('[Create Case - England] @regression', async () => {
11311166
unpaidRentInteractiveOption: dailyRentAmount.no,
11321167
unpaidRentAmountPerDay: '20'
11331168
});
1134-
//Details of rent arrears page need to be added once HDPI-2661 bug is fixed
1169+
await performValidation('mainHeader', detailsOfRentArrears.mainHeader);
1170+
await performAction('provideDetailsOfRentArrears', {
1171+
files: ['rentArrears.pdf'],
1172+
rentArrearsAmountOnStatement: '1000',
1173+
rentPaidByOthersOption: detailsOfRentArrears.yes,
1174+
paymentOptions: [detailsOfRentArrears.universalCreditOption, detailsOfRentArrears.paymentOtherOption]
1175+
});
11351176
await performValidation('mainHeader', moneyJudgment.mainHeader);
11361177
await performAction('selectMoneyJudgment', moneyJudgment.yes);
11371178
await performValidation('mainHeader', claimantCircumstances.mainHeader);

src/e2eTest/tests/createCaseWales.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,13 @@ test.describe('[Create Case - Wales] @regression', async () => {
117117
calculateRentAmount: '£32.85',
118118
unpaidRentInteractiveOption: dailyRentAmount.yes
119119
});
120+
await performValidation('mainHeader', detailsOfRentArrears.mainHeader);
121+
await performAction('provideDetailsOfRentArrears', {
122+
files: ['rentArrears.pdf'],
123+
rentArrearsAmountOnStatement: '1000',
124+
rentPaidByOthersOption: detailsOfRentArrears.yes,
125+
paymentOptions: [detailsOfRentArrears.universalCreditOption, detailsOfRentArrears.paymentOtherOption]
126+
});
120127
await performValidation('mainHeader', moneyJudgment.mainHeader);
121128
await performAction('selectMoneyJudgment', moneyJudgment.no);
122129
await performValidation('mainHeader', claimantCircumstances.mainHeader);
@@ -340,6 +347,13 @@ test.describe('[Create Case - Wales] @regression', async () => {
340347
calculateRentAmount: '£32.85',
341348
unpaidRentInteractiveOption: dailyRentAmount.yes
342349
});
350+
await performValidation('mainHeader', detailsOfRentArrears.mainHeader);
351+
await performAction('provideDetailsOfRentArrears', {
352+
files: ['rentArrears.pdf'],
353+
rentArrearsAmountOnStatement: '1000',
354+
rentPaidByOthersOption: detailsOfRentArrears.yes,
355+
paymentOptions: [detailsOfRentArrears.universalCreditOption, detailsOfRentArrears.paymentOtherOption]
356+
});
343357
await performValidation('mainHeader', moneyJudgment.mainHeader);
344358
await performAction('selectMoneyJudgment', moneyJudgment.yes);
345359
await performValidation('mainHeader', claimantCircumstances.mainHeader);

src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/PCSCase.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,10 @@ public class PCSCase {
620620

621621
private YesOrNo showNoRentArrearsGroundReasonPage;
622622

623-
private YesOrNo showRentDetailsPage;
623+
private YesOrNo showRentSectionPage;
624+
625+
@CCD(searchable = false)
626+
private YesOrNo showRentArrearsPage;
624627

625628
@CCD(
626629
label = "Which language did you use to complete this service?",

src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/ResumePossessionClaim.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ public class ResumePossessionClaim implements CCDConfig<PCSCase, State, UserRole
145145
private final RentArrearsGroundsForPossession rentArrearsGroundsForPossession;
146146
private final RentArrearsGroundForPossessionAdditionalGrounds rentArrearsGroundForPossessionAdditionalGrounds;
147147
private final NoRentArrearsGroundsForPossessionOptions noRentArrearsGroundsForPossessionOptions;
148+
private final CheckingNotice checkingNotice;
149+
private final WalesCheckingNotice walesCheckingNotice;
148150
private final ASBQuestionsWales asbQuestionsWales;
149151
private final UnderlesseeOrMortgageeDetailsPage underlesseeOrMortgageeDetailsPage;
150152

@@ -192,8 +194,8 @@ public void configureDecentralised(DecentralisedConfigBuilder<PCSCase, State, Us
192194
.add(noRentArrearsGroundsForPossessionReason)
193195
.add(new PreActionProtocol())
194196
.add(mediationAndSettlement)
195-
.add(new CheckingNotice())
196-
.add(new WalesCheckingNotice())
197+
.add(checkingNotice)
198+
.add(walesCheckingNotice)
197199
.add(noticeDetails)
198200
.add(new RentDetails())
199201
.add(new DailyRentAmount())

src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/resumepossessionclaim/CheckingNotice.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,26 @@
11
package uk.gov.hmcts.reform.pcs.ccd.page.resumepossessionclaim;
22

3+
import lombok.RequiredArgsConstructor;
4+
import org.springframework.stereotype.Component;
5+
import uk.gov.hmcts.ccd.sdk.api.CaseDetails;
6+
import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse;
37
import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration;
48
import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder;
59
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
10+
import uk.gov.hmcts.reform.pcs.ccd.domain.State;
611
import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent;
12+
import uk.gov.hmcts.reform.pcs.ccd.service.routing.RentSectionRoutingService;
713

14+
@Component
15+
@RequiredArgsConstructor
816
public class CheckingNotice implements CcdPageConfiguration {
917

18+
private final RentSectionRoutingService rentSectionRoutingService;
19+
1020
@Override
1121
public void addTo(PageBuilder pageBuilder) {
1222
pageBuilder
13-
.page("checkingNotice")
23+
.page("checkingNotice", this::midEvent)
1424
.pageLabel("Notice of your intention to begin possession proceedings")
1525
.showCondition("legislativeCountry=\"England\"")
1626
.label("checkingNotice-info",
@@ -39,4 +49,14 @@ possession notice periods (opens in a new tab)</a>
3949
.mandatory(PCSCase::getNoticeServed)
4050
.label("checkingNotice-saveAndReturn", CommonPageContent.SAVE_AND_RETURN);
4151
}
52+
53+
private AboutToStartOrSubmitResponse<PCSCase, State> midEvent(CaseDetails<PCSCase, State> details,
54+
CaseDetails<PCSCase, State> detailsBefore) {
55+
PCSCase caseData = details.getData();
56+
caseData.setShowRentSectionPage(rentSectionRoutingService.shouldShowRentSection(caseData));
57+
58+
return AboutToStartOrSubmitResponse.<PCSCase, State>builder()
59+
.data(caseData)
60+
.build();
61+
}
4262
}

src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/resumepossessionclaim/DailyRentAmount.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package uk.gov.hmcts.reform.pcs.ccd.page.resumepossessionclaim;
22

33
import static uk.gov.hmcts.reform.pcs.ccd.ShowConditions.NEVER_SHOW;
4+
import uk.gov.hmcts.ccd.sdk.api.CaseDetails;
5+
import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse;
6+
import uk.gov.hmcts.ccd.sdk.type.YesOrNo;
47
import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration;
58
import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder;
69
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
10+
import uk.gov.hmcts.reform.pcs.ccd.domain.State;
711
import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent;
812

913
public class DailyRentAmount implements CcdPageConfiguration {
1014

1115
@Override
1216
public void addTo(PageBuilder pageBuilder) {
1317
pageBuilder
14-
.page("dailyRentAmount")
18+
.page("dailyRentAmount", this::midEvent)
1519
.pageLabel("Daily rent amount")
16-
.showCondition("showRentDetailsPage=\"Yes\" AND rentFrequency!=\"OTHER\"")
20+
.showCondition("showRentSectionPage=\"Yes\" AND rentFrequency!=\"OTHER\"")
1721
.readonly(PCSCase::getFormattedCalculatedDailyRentChargeAmount, NEVER_SHOW)
1822
.label("dailyRentAmount-content",
1923
"""
@@ -32,4 +36,18 @@ public void addTo(PageBuilder pageBuilder) {
3236
.mandatory(PCSCase::getAmendedDailyRentChargeAmount, "rentPerDayCorrect=\"NO\"")
3337
.label("dailyRentAmount-saveAndReturn", CommonPageContent.SAVE_AND_RETURN);
3438
}
39+
40+
private AboutToStartOrSubmitResponse<PCSCase, State> midEvent(CaseDetails<PCSCase, State> details,
41+
CaseDetails<PCSCase, State> detailsBefore) {
42+
PCSCase caseData = details.getData();
43+
44+
// When user answers Yes/No on DailyRentAmount, set flag to show RentArrears
45+
if (caseData.getRentPerDayCorrect() != null) {
46+
caseData.setShowRentArrearsPage(YesOrNo.YES);
47+
}
48+
49+
return AboutToStartOrSubmitResponse.<PCSCase, State>builder()
50+
.data(caseData)
51+
.build();
52+
}
3553
}

src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/resumepossessionclaim/IntroductoryDemotedOrOtherGroundsForPossession.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo;
1414
import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent;
1515
import uk.gov.hmcts.reform.pcs.ccd.service.TextAreaValidationService;
16-
import uk.gov.hmcts.reform.pcs.ccd.service.routing.RentDetailsRoutingService;
1716

1817
import java.util.ArrayList;
1918
import java.util.List;
@@ -25,7 +24,6 @@
2524
public class IntroductoryDemotedOrOtherGroundsForPossession implements CcdPageConfiguration {
2625

2726
private final TextAreaValidationService textAreaValidationService;
28-
private final RentDetailsRoutingService rentDetailsRoutingService;
2927

3028
@Override
3129
public void addTo(PageBuilder pageBuilder) {
@@ -88,8 +86,6 @@ private AboutToStartOrSubmitResponse<PCSCase, State> midEvent(CaseDetails<PCSCas
8886
caseData.setShowIntroductoryDemotedOtherGroundReasonPage(YesOrNo.NO);
8987
}
9088

91-
caseData.setShowRentDetailsPage(rentDetailsRoutingService.shouldShowRentDetails(caseData));
92-
9389
if (!validationErrors.isEmpty()) {
9490
return textAreaValidationService.createValidationResponse(caseData, validationErrors);
9591
}

src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/resumepossessionclaim/MoneyJudgment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public void addTo(PageBuilder pageBuilder) {
1212
pageBuilder
1313
.page("moneyJudgment")
1414
.pageLabel("Money judgment")
15-
.showCondition("showRentDetailsPage=\"Yes\"")
15+
.showCondition("showRentSectionPage=\"Yes\"")
1616
.label("moneyJudgment-separator", "---")
1717
.mandatory(PCSCase::getArrearsJudgmentWanted)
1818
.label("moneyJudgment-saveAndReturn", CommonPageContent.SAVE_AND_RETURN);

src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/resumepossessionclaim/NoRentArrearsGroundsForPossessionOptions.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package uk.gov.hmcts.reform.pcs.ccd.page.resumepossessionclaim;
22

3-
import lombok.RequiredArgsConstructor;
43
import lombok.extern.slf4j.Slf4j;
54
import org.springframework.stereotype.Component;
65
import uk.gov.hmcts.ccd.sdk.api.CaseDetails;
@@ -13,7 +12,6 @@
1312
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
1413
import uk.gov.hmcts.reform.pcs.ccd.domain.State;
1514
import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent;
16-
import uk.gov.hmcts.reform.pcs.ccd.service.routing.RentDetailsRoutingService;
1715

1816
import java.util.List;
1917
import java.util.Set;
@@ -23,11 +21,8 @@
2321

2422
@Slf4j
2523
@Component
26-
@RequiredArgsConstructor
2724
public class NoRentArrearsGroundsForPossessionOptions implements CcdPageConfiguration {
2825

29-
private final RentDetailsRoutingService rentDetailsRoutingService;
30-
3126
@Override
3227
public void addTo(PageBuilder pageBuilder) {
3328
pageBuilder
@@ -37,7 +32,7 @@ public void addTo(PageBuilder pageBuilder) {
3732
+ " AND legislativeCountry=\"England\""
3833
)
3934
.readonly(PCSCase::getShowNoRentArrearsGroundReasonPage, NEVER_SHOW)
40-
.readonly(PCSCase::getShowRentDetailsPage, NEVER_SHOW)
35+
.readonly(PCSCase::getShowRentSectionPage, NEVER_SHOW)
4136
.label(
4237
"NoRentArrearsGroundsForPossessionOptions-information", """
4338
---
@@ -75,9 +70,6 @@ private AboutToStartOrSubmitResponse<PCSCase, State> midEvent(CaseDetails<PCSCas
7570
boolean shouldShowReasonsPage = hasOtherDiscretionaryGrounds || hasOtherMandatoryGrounds;
7671
caseData.setShowNoRentArrearsGroundReasonPage(YesOrNo.from(shouldShowReasonsPage));
7772

78-
YesOrNo showRentDetails = rentDetailsRoutingService.shouldShowRentDetails(caseData);
79-
caseData.setShowRentDetailsPage(showRentDetails);
80-
8173
return AboutToStartOrSubmitResponse.<PCSCase, State>builder()
8274
.data(caseData)
8375
.build();

0 commit comments

Comments
 (0)