Skip to content

Commit 8aec69e

Browse files
scottstewart-slSameenaHMCTS
authored andcommitted
HDPI-3228: Add integration test to check Save and Resume hint (#978)
1 parent 1e8ffbd commit 8aec69e

File tree

4 files changed

+147
-30
lines changed

4 files changed

+147
-30
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package uk.gov.hmcts.reform.pcs.ccd;
2+
3+
import org.assertj.core.api.SoftAssertions;
4+
import org.junit.jupiter.params.ParameterizedTest;
5+
import org.junit.jupiter.params.provider.Arguments;
6+
import org.junit.jupiter.params.provider.MethodSource;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.boot.test.context.SpringBootTest;
9+
import uk.gov.hmcts.ccd.sdk.CCDDefinitionGenerator;
10+
import uk.gov.hmcts.ccd.sdk.ResolvedCCDConfig;
11+
import uk.gov.hmcts.ccd.sdk.api.Event;
12+
import uk.gov.hmcts.ccd.sdk.api.Field;
13+
import uk.gov.hmcts.ccd.sdk.api.FieldCollection;
14+
import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.UserRole;
15+
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
16+
import uk.gov.hmcts.reform.pcs.ccd.domain.State;
17+
import uk.gov.hmcts.reform.pcs.ccd.event.EventId;
18+
import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent;
19+
20+
import java.util.List;
21+
import java.util.Map;
22+
import java.util.stream.Collectors;
23+
import java.util.stream.Stream;
24+
25+
import static org.assertj.core.api.Assertions.assertThat;
26+
import static org.junit.jupiter.params.provider.Arguments.arguments;
27+
28+
@SpringBootTest
29+
@SuppressWarnings({"rawtypes"})
30+
class CaseDefinitionIT {
31+
32+
@Autowired
33+
private CCDDefinitionGenerator ccdDefinitionGenerator;
34+
35+
@ParameterizedTest
36+
@MethodSource("saveAndResumeEventScenarios")
37+
void eventPagesShouldHaveSaveAndResumeHintText(EventId eventId, List<String> excludedPageIds) {
38+
Map<String, List<Field>> pageFieldsMap = getPageToFieldsMap(eventId);
39+
40+
SoftAssertions softAssertions = new SoftAssertions();
41+
42+
pageFieldsMap.entrySet()
43+
.stream()
44+
.filter(entry -> !excludedPageIds.contains(entry.getKey()))
45+
.forEach(entry -> {
46+
String pageId = entry.getKey();
47+
List<Field> pageFields = entry.getValue();
48+
49+
boolean hintTextFound = containsSaveAndResumeHint(pageFields);
50+
softAssertions.assertThat(hintTextFound)
51+
.withFailMessage("Page %s should have save and resume hint", pageId)
52+
.isTrue();
53+
});
54+
55+
softAssertions.assertAll();
56+
}
57+
58+
private static Stream<Arguments> saveAndResumeEventScenarios() {
59+
return Stream.of(
60+
// Event ID, Excluded Page IDs
61+
arguments(
62+
EventId.resumePossessionClaim,
63+
List.of(
64+
"resumeClaim",
65+
"claimantTypeNotEligibleEngland",
66+
"claimantTypeNotEligibleWales",
67+
"claimTypeNotEligibleEngland",
68+
"claimTypeNotEligibleWales"
69+
)
70+
),
71+
72+
arguments(
73+
EventId.enforceTheOrder,
74+
List.of(
75+
"enforcementApplication",
76+
"evictionDelayWarning",
77+
"checkYourAnswersPlaceHolder"
78+
)
79+
80+
)
81+
);
82+
}
83+
84+
private Map<String, List<Field>> getPageToFieldsMap(EventId eventId) {
85+
ResolvedCCDConfig<PCSCase, State, UserRole> ccdConfig = getCCDConfig();
86+
87+
Event<PCSCase, UserRole, State> event = ccdConfig.getEvents().get(eventId.name());
88+
assertThat(event).isNotNull();
89+
90+
FieldCollection fieldCollection = event.getFields();
91+
92+
return fieldCollection.getFields().stream()
93+
.map(Field.FieldBuilder::build)
94+
.collect(Collectors.groupingBy(Field::getPage));
95+
}
96+
97+
@SuppressWarnings("unchecked")
98+
private ResolvedCCDConfig<PCSCase, State, UserRole> getCCDConfig() {
99+
return (ResolvedCCDConfig<PCSCase, State, UserRole>) ccdDefinitionGenerator.loadConfigs().getFirst();
100+
}
101+
102+
private boolean containsSaveAndResumeHint(List<Field> pageFields) {
103+
return pageFields.stream()
104+
.anyMatch(field -> CommonPageContent.SAVE_AND_RETURN.equals(field.getLabel()));
105+
}
106+
107+
108+
}

src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/enforcement/MoneyOwedPage.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33
import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration;
44
import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder;
55

6+
import static uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent.SAVE_AND_RETURN;
7+
68
public class MoneyOwedPage implements CcdPageConfiguration {
79

810
@Override
911
public void addTo(PageBuilder pageBuilder) {
1012
pageBuilder
1113
.page("moneyOwedPage")
1214
.pageLabel("Money owed (place holder)")
13-
.label("moneyOwedPage-content", "---");
15+
.label("moneyOwedPage-content", "---")
16+
.label("moneyOwedPage-save-and-return", SAVE_AND_RETURN);
1417
}
1518

1619
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import uk.gov.hmcts.reform.pcs.ccd.domain.State;
1212
import uk.gov.hmcts.reform.pcs.ccd.domain.UnderlesseeMortgageeDetails;
1313
import uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo;
14+
import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent;
1415
import uk.gov.hmcts.reform.pcs.ccd.service.UnderlesseeMortgageeValidator;
1516

1617
import java.util.ArrayList;
@@ -52,7 +53,9 @@ public void addTo(PageBuilder pageBuilder) {
5253
""")
5354
.mandatory(PCSCase::getAddAdditionalUnderlesseeOrMortgagee)
5455
.mandatory(PCSCase::getAdditionalUnderlesseeOrMortgagee,
55-
"addAdditionalUnderlesseeOrMortgagee=\"YES\"");
56+
"addAdditionalUnderlesseeOrMortgagee=\"YES\"")
57+
.label("underlesseeMortgagee-saveAndReturn", CommonPageContent.SAVE_AND_RETURN);
58+
5659
}
5760

5861
private AboutToStartOrSubmitResponse<PCSCase, State> midEvent(CaseDetails<PCSCase, State> details,

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

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
1010
import uk.gov.hmcts.reform.pcs.ccd.domain.State;
1111
import uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo;
12+
import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent;
1213
import uk.gov.hmcts.reform.pcs.ccd.service.TextAreaValidationService;
1314
import uk.gov.hmcts.reform.pcs.ccd.domain.wales.ASBQuestionsDetailsWales;
1415

@@ -26,34 +27,36 @@ public class ASBQuestionsWales implements CcdPageConfiguration {
2627
@Override
2728
public void addTo(PageBuilder pageBuilder) {
2829
pageBuilder
29-
.page("asbQuestionsWales", this::midEvent)
30-
.pageLabel("Antisocial behaviour and illegal or prohibited conduct")
31-
.label("asbQuestionsWales-separator", "---")
32-
.showCondition("showASBQuestionsPageWales=\"Yes\"")
33-
.readonly(PCSCase::getShowASBQuestionsPageWales, NEVER_SHOW)
34-
.complex(PCSCase::getAsbQuestionsWales)
35-
.mandatory(ASBQuestionsDetailsWales::getAntisocialBehaviour)
36-
.mandatory(ASBQuestionsDetailsWales::getAntisocialBehaviourDetails,
37-
"walesAntisocialBehaviour=\"YES\"")
38-
.label("asbQuestionsWales-separator-2", "---")
39-
.mandatory(ASBQuestionsDetailsWales::getIllegalPurposesUse)
40-
.mandatory(ASBQuestionsDetailsWales::getIllegalPurposesUseDetails,
41-
"walesIllegalPurposesUse=\"YES\"")
42-
.label("asbQuestionsWales-separator-3", "---")
43-
.mandatory(ASBQuestionsDetailsWales::getOtherProhibitedConduct)
44-
.mandatory(ASBQuestionsDetailsWales::getOtherProhibitedConductDetails,
45-
"walesOtherProhibitedConduct=\"YES\"")
46-
.done()
47-
.label("asbQuestionsWales-end-separator", "---")
48-
.label(
49-
"asbQuestionsWales-info",
50-
"""
51-
<p class="govuk-body" tabindex="0">
52-
You'll have the option to upload documents that give more details
53-
about the antisocial behaviour or illegal or prohibited conduct you're
54-
describing or evidence of this behaviour later on.
55-
</p>
56-
""");
30+
.page("asbQuestionsWales", this::midEvent)
31+
.pageLabel("Antisocial behaviour and illegal or prohibited conduct")
32+
.label("asbQuestionsWales-separator", "---")
33+
.showCondition("showASBQuestionsPageWales=\"Yes\"")
34+
.readonly(PCSCase::getShowASBQuestionsPageWales, NEVER_SHOW)
35+
.complex(PCSCase::getAsbQuestionsWales)
36+
.mandatory(ASBQuestionsDetailsWales::getAntisocialBehaviour)
37+
.mandatory(ASBQuestionsDetailsWales::getAntisocialBehaviourDetails,
38+
"walesAntisocialBehaviour=\"YES\"")
39+
.label("asbQuestionsWales-separator-2", "---")
40+
.mandatory(ASBQuestionsDetailsWales::getIllegalPurposesUse)
41+
.mandatory(ASBQuestionsDetailsWales::getIllegalPurposesUseDetails,
42+
"walesIllegalPurposesUse=\"YES\"")
43+
.label("asbQuestionsWales-separator-3", "---")
44+
.mandatory(ASBQuestionsDetailsWales::getOtherProhibitedConduct)
45+
.mandatory(ASBQuestionsDetailsWales::getOtherProhibitedConductDetails,
46+
"walesOtherProhibitedConduct=\"YES\"")
47+
.done()
48+
.label("asbQuestionsWales-end-separator", "---")
49+
.label(
50+
"asbQuestionsWales-info",
51+
"""
52+
<p class="govuk-body" tabindex="0">
53+
You'll have the option to upload documents that give more details
54+
about the antisocial behaviour or illegal or prohibited conduct you're
55+
describing or evidence of this behaviour later on.
56+
</p>
57+
""")
58+
.label("asbQuestionsWales-saveAndReturn", CommonPageContent.SAVE_AND_RETURN);
59+
5760
}
5861

5962
private AboutToStartOrSubmitResponse<PCSCase, State> midEvent(CaseDetails<PCSCase, State> details,

0 commit comments

Comments
 (0)