Skip to content

Commit

Permalink
SSCS-10542 Set Aside (#2976)
Browse files Browse the repository at this point in the history
* SSCS-10542 Set Aside

* SSCS-10542 Adding Post Hearings feature flag

* SSCS-10542 Map Action To Event

* SSCS-10542 Feedback elseif to switch

* SSCS-10542 Add set aside refused dwpState

* reorder setting dwp state

* SSCS-10542 Upgrade tests to Jupiter

* Fixing test coverage

* Fixing tests
  • Loading branch information
TeaWithLucas committed Nov 4, 2022
1 parent de3e6e5 commit 4ab0462
Show file tree
Hide file tree
Showing 37 changed files with 1,247 additions and 338 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,4 @@ bin/
/src/main/resources/uk/gov/hmcts/reform/sscs/git.properties

*.hprof
*.log
18 changes: 13 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,14 @@ dependencies {
e2eImplementation(sourceSets.test.output)
}

tasks.withType(Test) {
useJUnitPlatform()

testLogging {
exceptionFormat = 'full'
}
}

task integration(type: Test) {
setTestClassesDirs(sourceSets.integrationTest.output.classesDirs)
setClasspath(sourceSets.integrationTest.runtimeClasspath)
Expand Down Expand Up @@ -120,8 +128,8 @@ jacoco {
jacocoTestReport {
executionData(test, integration)
reports {
xml.enabled = true
csv.enabled = false
xml.required = true
csv.required = false
xml.destination file("${project.buildDir}/reports/jacoco/test/jacocoTestReport.xml")
}
}
Expand Down Expand Up @@ -398,7 +406,7 @@ dependencies {
implementation group: 'com.github.hmcts', name: 'document-management-client', version: '7.0.0'
implementation group: 'com.github.hmcts', name: 'cmc-pdf-service-client', version: '7.0.1'

implementation group: 'com.github.hmcts', name: 'sscs-common', version: '4.20.2'
implementation group: 'com.github.hmcts', name: 'sscs-common', version: '4.21.1'
implementation group: 'com.github.hmcts', name: 'sscs-pdf-email-common', version: '1.6.0'

implementation group: 'com.azure', name: 'azure-core', version: '1.33.0'
Expand Down Expand Up @@ -501,8 +509,8 @@ bootJar {
jacocoTestReport {
executionData(test, integration)
reports {
xml.enabled = true
csv.enabled = false
xml.required = true
csv.required = false
}
}

Expand Down
1 change: 1 addition & 0 deletions lombok.config
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
lombok.copyableAnnotations+=org.springframework.beans.factory.annotation.Value
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public void callToMidEventHandler_willPreviewTheDocument() throws Exception {

assertEquals(Collections.EMPTY_SET, result.getErrors());

assertEquals(documentUrl, result.getData().getPreviewDocument().getDocumentUrl());
assertEquals(documentUrl, result.getData().getDocumentStaging().getPreviewDocument().getDocumentUrl());

ArgumentCaptor<GenerateFileParams> capture = ArgumentCaptor.forClass(GenerateFileParams.class);
verify(generateFile).assemble(capture.capture());
Expand All @@ -91,11 +91,11 @@ public void callToAboutToSubmitEventHandler_willSaveTheInterlocDecisionDocumentF

assertEquals(Collections.EMPTY_SET, result.getErrors());

assertNull(result.getData().getPreviewDocument());
assertNull(result.getData().getSignedRole());
assertNull(result.getData().getSignedBy());
assertNull(result.getData().getGenerateNotice());
assertNull(result.getData().getDateAdded());
assertNull(result.getData().getDocumentStaging().getPreviewDocument());
assertNull(result.getData().getDocumentGeneration().getSignedRole());
assertNull(result.getData().getDocumentGeneration().getSignedBy());
assertNull(result.getData().getDocumentGeneration().getGenerateNotice());
assertNull(result.getData().getDocumentStaging().getDateAdded());
assertEquals(4, result.getData().getSscsDocument().size());
assertEquals(DocumentType.DECISION_NOTICE.getValue(), result.getData().getSscsDocument().get(0).getValue().getDocumentType());
assertEquals("some location", result.getData().getSscsDocument().get(0).getValue().getDocumentLink().getDocumentUrl());
Expand All @@ -122,11 +122,11 @@ public void callToAboutToSubmitEventHandler_willSaveTheManuallyUploadedInterlocD

assertEquals(Collections.EMPTY_SET, result.getErrors());

assertNull(result.getData().getPreviewDocument());
assertNull(result.getData().getSignedRole());
assertNull(result.getData().getSignedBy());
assertNull(result.getData().getGenerateNotice());
assertNull(result.getData().getDateAdded());
assertNull(result.getData().getDocumentStaging().getPreviewDocument());
assertNull(result.getData().getDocumentGeneration().getSignedRole());
assertNull(result.getData().getDocumentGeneration().getSignedBy());
assertNull(result.getData().getDocumentGeneration().getGenerateNotice());
assertNull(result.getData().getDocumentStaging().getDateAdded());
assertNull(result.getData().getExtensionNextEventDl());
assertEquals(4, result.getData().getSscsDocument().size());
assertEquals(DocumentType.DECISION_NOTICE.getValue(), result.getData().getSscsDocument().get(0).getValue().getDocumentType());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void callToMidEventHandler_willPreviewTheDocument() throws Exception {

assertEquals(Collections.EMPTY_SET, result.getErrors());

assertEquals(documentUrl, result.getData().getPreviewDocument().getDocumentUrl());
assertEquals(documentUrl, result.getData().getDocumentStaging().getPreviewDocument().getDocumentUrl());

ArgumentCaptor<GenerateFileParams> capture = ArgumentCaptor.forClass(GenerateFileParams.class);
verify(generateFile).assemble(capture.capture());
Expand All @@ -92,11 +92,11 @@ public void callToAboutToSubmitEventHandler_willSaveTheInterlocDirectionDocument

assertEquals(Collections.EMPTY_SET, result.getErrors());

assertNull(result.getData().getPreviewDocument());
assertNull(result.getData().getSignedRole());
assertNull(result.getData().getSignedBy());
assertNull(result.getData().getGenerateNotice());
assertNull(result.getData().getDateAdded());
assertNull(result.getData().getDocumentStaging().getPreviewDocument());
assertNull(result.getData().getDocumentGeneration().getSignedRole());
assertNull(result.getData().getDocumentGeneration().getSignedBy());
assertNull(result.getData().getDocumentGeneration().getGenerateNotice());
assertNull(result.getData().getDocumentStaging().getDateAdded());
assertNull(result.getData().getExtensionNextEventDl());
assertNull(result.getData().getReinstatementOutcome());
assertEquals(4, result.getData().getSscsDocument().size());
Expand Down Expand Up @@ -126,11 +126,11 @@ public void callToAboutToSubmitEventHandlerForReinstamentRequest_willHandle() th

assertEquals(Collections.EMPTY_SET, result.getErrors());

assertNull(result.getData().getPreviewDocument());
assertNull(result.getData().getSignedRole());
assertNull(result.getData().getSignedBy());
assertNull(result.getData().getGenerateNotice());
assertNull(result.getData().getDateAdded());
assertNull(result.getData().getDocumentStaging().getPreviewDocument());
assertNull(result.getData().getDocumentGeneration().getSignedRole());
assertNull(result.getData().getDocumentGeneration().getSignedBy());
assertNull(result.getData().getDocumentGeneration().getGenerateNotice());
assertNull(result.getData().getDocumentStaging().getDateAdded());
assertNull(result.getData().getExtensionNextEventDl());
assertNull(result.getData().getReinstatementOutcome());
assertEquals(4, result.getData().getSscsDocument().size());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,12 @@ public class IssueDocumentHandler {
protected void clearTransientFields(SscsCaseData caseData, State beforeState) {
clearBasicTransientFields(caseData);
caseData.setExtensionNextEventDl(null);
caseData.setSignedBy(null);
caseData.setSignedRole(null);

}

protected void clearBasicTransientFields(SscsCaseData caseData) {
caseData.setBodyContent(null);
caseData.setDirectionNoticeContent(null);
caseData.setPreviewDocument(null);
caseData.setGenerateNotice(null);
caseData.setDocumentGeneration(DocumentGeneration.builder().build());
caseData.setDocumentStaging(DocumentStaging.builder().build());
caseData.getSscsFinalDecisionCaseData().setWriteFinalDecisionGenerateNotice(null);
caseData.setDateAdded(null);
caseData.setSscsInterlocDirectionDocument(null);
caseData.setSscsInterlocDecisionDocument(null);
caseData.setAdjournCasePreviewDocument(null);
Expand All @@ -57,11 +51,11 @@ protected NoticeIssuedTemplateBody createPayload(PreSubmitCallbackResponse<SscsC
.nino(caseData.getAppeal().getAppellant().getIdentity().getNino())
.shouldHideNino(isBenefitTypeValidToHideNino(caseData.getBenefitType()))
.respondents(getRespondents(caseData))
.noticeBody(Optional.ofNullable(caseData.getBodyContent())
.orElse(caseData.getDirectionNoticeContent()))
.userName(caseData.getSignedBy())
.noticeBody(Optional.ofNullable(caseData.getDocumentGeneration().getBodyContent())
.orElse(caseData.getDocumentGeneration().getDirectionNoticeContent()))
.userName(caseData.getDocumentGeneration().getSignedBy())
.noticeType(documentTypeLabel.toUpperCase())
.userRole(caseData.getSignedRole())
.userRole(caseData.getDocumentGeneration().getSignedRole())
.dateAdded(dateAdded)
.generatedDate(generatedDate)
.build();
Expand Down Expand Up @@ -120,7 +114,7 @@ protected PreSubmitCallbackResponse<SscsCaseData> issueDocument(Callback<SscsCas

String documentUrl = Optional.ofNullable(getDocumentFromCaseData(caseData)).map(DocumentLink::getDocumentUrl).orElse(null);

LocalDate dateAdded = Optional.ofNullable(caseData.getDateAdded()).orElse(LocalDate.now());
LocalDate dateAdded = Optional.ofNullable(caseData.getDocumentStaging().getDateAdded()).orElse(LocalDate.now());

String documentTypeLabel = documentType.getLabel() != null ? documentType.getLabel() : documentType.getValue();

Expand Down Expand Up @@ -166,7 +160,7 @@ protected PreSubmitCallbackResponse<SscsCaseData> issueDocument(Callback<SscsCas
* Override this method if previewDocument is not the correct field to set.
*/
protected void setDocumentOnCaseData(SscsCaseData caseData, DocumentLink file) {
caseData.setPreviewDocument(file);
caseData.getDocumentStaging().setPreviewDocument(file);
}

/**
Expand All @@ -175,7 +169,7 @@ protected void setDocumentOnCaseData(SscsCaseData caseData, DocumentLink file) {
* @return DocumentLink
*/
protected DocumentLink getDocumentFromCaseData(SscsCaseData caseData) {
return caseData.getPreviewDocument();
return caseData.getDocumentStaging().getPreviewDocument();
}

protected String buildFullName(SscsCaseData caseData) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package uk.gov.hmcts.reform.sscs.ccd.presubmit.actionposthearingapplication;

import static java.util.Objects.requireNonNull;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import uk.gov.hmcts.reform.sscs.ccd.callback.Callback;
import uk.gov.hmcts.reform.sscs.ccd.callback.CallbackType;
import uk.gov.hmcts.reform.sscs.ccd.callback.PreSubmitCallbackResponse;
import uk.gov.hmcts.reform.sscs.ccd.domain.ActionPostHearingTypes;
import uk.gov.hmcts.reform.sscs.ccd.domain.DocumentGeneration;
import uk.gov.hmcts.reform.sscs.ccd.domain.DocumentStaging;
import uk.gov.hmcts.reform.sscs.ccd.domain.EventType;
import uk.gov.hmcts.reform.sscs.ccd.domain.SscsCaseData;
import uk.gov.hmcts.reform.sscs.ccd.presubmit.PreSubmitCallbackHandler;
import uk.gov.hmcts.reform.sscs.util.SscsUtil;

@Service
@Slf4j
@RequiredArgsConstructor
public class ActionPostHearingApplicationAboutToSubmitHandler implements PreSubmitCallbackHandler<SscsCaseData> {
@Value("${feature.postHearings.enabled}")
private final boolean isPostHearingsEnabled;

@Override
public boolean canHandle(CallbackType callbackType, Callback<SscsCaseData> callback) {
requireNonNull(callback, "callback must not be null");
requireNonNull(callbackType, "callbacktype must not be null");

return callbackType.equals(CallbackType.ABOUT_TO_SUBMIT)
&& callback.getEvent() == EventType.ACTION_POST_HEARING_APPLICATION
&& isPostHearingsEnabled;
}

@Override
public PreSubmitCallbackResponse<SscsCaseData> handle(CallbackType callbackType, Callback<SscsCaseData> callback,
String userAuthorisation) {
SscsCaseData caseData = callback.getCaseDetails().getCaseData();

PreSubmitCallbackResponse<SscsCaseData> response = new PreSubmitCallbackResponse<>(caseData);

String caseId = caseData.getCcdCaseId();
if (!SscsUtil.isSAndLCase(caseData)) {
log.info("Action Post Hearing Application: Cannot process non Scheduling & Listing Case for Case ID {}",
caseId);
response.addError("Cannot process Action Post Hearing Application on non Scheduling & Listing Case");
return response;
}

ActionPostHearingTypes typeSelected = caseData.getActionPostHearingApplication().getTypeSelected();
log.info("Action Post Hearing Application: handing action {} for case {}", typeSelected, caseId);

clearTransientFields(caseData);

return response;
}

private void clearTransientFields(SscsCaseData caseData) {
caseData.setDocumentGeneration(DocumentGeneration.builder().build());
caseData.setDocumentStaging(DocumentStaging.builder().build());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package uk.gov.hmcts.reform.sscs.ccd.presubmit.actionposthearingapplication;

import static uk.gov.hmcts.reform.sscs.ccd.callback.DocumentType.DECISION_NOTICE;
import static uk.gov.hmcts.reform.sscs.ccd.domain.EventType.DECISION_ISSUED;
import static uk.gov.hmcts.reform.sscs.ccd.domain.YesNo.isYes;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import uk.gov.hmcts.reform.sscs.ccd.callback.Callback;
import uk.gov.hmcts.reform.sscs.ccd.callback.CallbackType;
import uk.gov.hmcts.reform.sscs.ccd.callback.PreSubmitCallbackResponse;
import uk.gov.hmcts.reform.sscs.ccd.domain.ActionPostHearingTypes;
import uk.gov.hmcts.reform.sscs.ccd.domain.EventType;
import uk.gov.hmcts.reform.sscs.ccd.domain.SscsCaseData;
import uk.gov.hmcts.reform.sscs.ccd.presubmit.IssueDocumentHandler;
import uk.gov.hmcts.reform.sscs.ccd.presubmit.PreSubmitCallbackHandler;
import uk.gov.hmcts.reform.sscs.config.DocumentConfiguration;
import uk.gov.hmcts.reform.sscs.docassembly.GenerateFile;
import uk.gov.hmcts.reform.sscs.util.SscsUtil;

@Component
@Slf4j
@RequiredArgsConstructor
public class ActionPostHearingApplicationMidEventHandler extends IssueDocumentHandler implements PreSubmitCallbackHandler<SscsCaseData> {
public static final String PAGE_ID_GENERATE_NOTICE = "generateNotice";
private final DocumentConfiguration documentConfiguration;
private final GenerateFile generateFile;
@Value("${feature.postHearings.enabled}")
private final boolean isPostHearingsEnabled;

@Override
public boolean canHandle(CallbackType callbackType, Callback<SscsCaseData> callback) {
return callbackType.equals(CallbackType.MID_EVENT)
&& callback.getEvent() == EventType.ACTION_POST_HEARING_APPLICATION
&& isPostHearingsEnabled;
}

@Override
public PreSubmitCallbackResponse<SscsCaseData> handle(CallbackType callbackType, Callback<SscsCaseData> callback,
String userAuthorisation) {
final SscsCaseData caseData = callback.getCaseDetails().getCaseData();

String pageId = callback.getPageId();
String caseId = caseData.getCcdCaseId();
log.info("Action Post Hearing Application: handling callback with pageId {} for caseId {}", pageId, caseId);

PreSubmitCallbackResponse<SscsCaseData> response = new PreSubmitCallbackResponse<>(caseData);

if (!SscsUtil.isSAndLCase(caseData)) {
log.info("Action Post Hearing Application: Cannot process non Scheduling & Listing Case for Case ID {}",
caseId);
response.addError("Cannot process Action Post Hearing Application on non Scheduling & Listing Case");
return response;
}

ActionPostHearingTypes typeSelected = caseData.getActionPostHearingApplication().getTypeSelected();
log.info("Action Post Hearing Application: handing action {} for case {}", typeSelected, caseId);

if (PAGE_ID_GENERATE_NOTICE.equals(pageId) && isYes(caseData.getDocumentGeneration().getGenerateNotice())) {
log.info("Action Post Hearing Application: Generating notice for caseId {}", caseId);
String templateId = documentConfiguration.getDocuments()
.get(caseData.getLanguagePreference()).get(DECISION_ISSUED);
response = issueDocument(callback, DECISION_NOTICE, templateId, generateFile, userAuthorisation);
}

return response;
}
}

0 comments on commit 4ab0462

Please sign in to comment.