diff --git a/charts/sscs-tribunals-api/values.ccd.preview.template.yaml b/charts/sscs-tribunals-api/values.ccd.preview.template.yaml index c474f56c30..adc3a8080f 100644 --- a/charts/sscs-tribunals-api/values.ccd.preview.template.yaml +++ b/charts/sscs-tribunals-api/values.ccd.preview.template.yaml @@ -128,7 +128,7 @@ xui-webapp: SERVICES_ROLE_ASSIGNMENT_MAPPING_API: http://${SERVICE_NAME}-am-org-role-mapping-service JURISDICTIONS: SSCS WA_SUPPORTED_JURISDICTIONS: SSCS - GLOBAL_SEARCH_SERVICES: IA,CIVIL,PRIVATELAW,PUBLICLAW,SSCS,ST_CIC,EMPLOYMENT + GLOBAL_SEARCH_SERVICES: IA,CIVIL,PRIVATELAW,PUBLICLAW,SSCS LAUNCH_DARKLY_CLIENT_ID: 5de6610b23ce5408280f2268 FEATURE_WORKALLOCATION_ENABLED: true FEATURE_REDIS_ENABLED: false @@ -530,6 +530,8 @@ ccd: image: hmctspublic.azurecr.io/ccd/admin-web:latest ingressHost: admin-web-${SERVICE_FQDN} environment: + ADMINWEB_GLOBAL_SEARCH_INDEX_URL: http://${SERVICE_NAME}-ccd-definition-store/elastic-support/global-search/index + ADMINWEB_ELASTIC_CASE_TYPES_URL: http://${SERVICE_NAME}-ccd-definition-store/elastic-support/case-types IDAM_ADMIN_WEB_SERVICE_KEY: ${ADMIN_S2S_KEY} IDAM_OAUTH2_AW_CLIENT_SECRET: ${ADMIN_WEB_IDAM_SECRET} keyVaults: [ ] @@ -616,7 +618,7 @@ ccd: #Use this image to import your CCD definition. To have an image available, create a git tag and push it. ccd-definition-importer: - image: hmctspublic.azurecr.io/sscs/ccd-definition-importer-benefit:S12006MnonProd + image: hmctspublic.azurecr.io/sscs/ccd-definition-importer-benefit:S12006PnonProd definitionFilename: sscs-ccd.xlsx redirectUri: http://${SERVICE_NAME}-ccd-admin-web/oauth2redirect environment: @@ -635,7 +637,7 @@ ccd: CCD_DEF_MYA_REPRESENTATIVE_LINK: http://${SERVICE_NAME}-ccd-definition-store CCD_DEF_MYA_APPOINTEE_LINK: http://${SERVICE_NAME}-ccd-definition-store CCD_DEF_ENV: 'PROD' - CCD_DEF_VERSION: S12006MnonProd + CCD_DEF_VERSION: S12006PnonProd secrets: [] userRoles: - citizen @@ -657,6 +659,7 @@ ccd: - caseworker-sscs-hmrcresponsewriter - caseworker-wa-task-configuration - caseworker-ras-validation + - GS_profile elastic: enabled: true diff --git a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/InterlocServiceHandler.java b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/InterlocServiceHandler.java index cfe2329420..eef3ea1d34 100644 --- a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/InterlocServiceHandler.java +++ b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/InterlocServiceHandler.java @@ -60,7 +60,6 @@ protected SscsCaseData setField(SscsCaseData newSscsCaseData, String newValue, E } setInterlocReferralDate(newSscsCaseData, eventType); - clearDirectionDueDate(newSscsCaseData, eventType); return newSscsCaseData; diff --git a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/IssueDocumentHandler.java b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/IssueDocumentHandler.java index 63ce15c19c..840c3ba8bf 100644 --- a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/IssueDocumentHandler.java +++ b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/IssueDocumentHandler.java @@ -192,13 +192,19 @@ protected String getEmbeddedDocumentTypeLabel(SscsCaseData caseData, DocumentTyp String embeddedDocumentTypeLabel = (FINAL_DECISION_NOTICE.equals(documentType) || CORRECTION_GRANTED.equals(documentType) ? "Decision Notice" : documentTypeLabel); if (isPostHearingsEnabled) { - PostHearingReviewType postHearingReviewType = caseData.getPostHearing().getReviewType(); + PostHearing postHearing = caseData.getPostHearing(); + PostHearingReviewType postHearingReviewType = postHearing.getReviewType(); if (nonNull(postHearingReviewType)) { + if (PostHearingReviewType.PERMISSION_TO_APPEAL.equals(postHearingReviewType) + && PermissionToAppealActions.REVIEW.equals(postHearing.getPermissionToAppeal().getAction())) { + return "Review Decision Notice"; + } + return postHearingReviewType.getDescriptionEn() + " Decision Notice"; } - if (isYes(caseData.getPostHearing().getCorrection().getIsCorrectionFinalDecisionInProgress())) { + if (isYes(postHearing.getCorrection().getIsCorrectionFinalDecisionInProgress())) { return documentTypeLabel; } } diff --git a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToStartHandler.java b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToStartHandler.java index 812dc1af5d..9bb3a562cf 100644 --- a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToStartHandler.java +++ b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToStartHandler.java @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.List; +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; @@ -20,11 +21,16 @@ @Service public class DirectionIssuedAboutToStartHandler implements PreSubmitCallbackHandler { + private final boolean isPostHearingsEnabled; + + public DirectionIssuedAboutToStartHandler(@Value("${feature.postHearings.enabled}") boolean isPostHearingsEnabled) { + this.isPostHearingsEnabled = isPostHearingsEnabled; + } @Override public boolean canHandle(CallbackType callbackType, Callback callback) { requireNonNull(callback, "callback must not be null"); - requireNonNull(callbackType, "callbacktype must not be null"); + requireNonNull(callbackType, "callbackType must not be null"); return (callbackType.equals(CallbackType.ABOUT_TO_START) || callbackType.equals(CallbackType.MID_EVENT)) @@ -43,6 +49,10 @@ public PreSubmitCallbackResponse handle(CallbackType callbackType, setDirectionTypeDropDown(sscsCaseData); setExtensionNextEventDropdown(callback.getCaseDetails().getState(), sscsCaseData); + if (isPostHearingsEnabled) { + sscsCaseData.setPrePostHearing(null); + } + clearFields(sscsCaseData); setPartiesToSendLetter(sscsCaseData); return new PreSubmitCallbackResponse<>(sscsCaseData); diff --git a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToSubmitHandler.java b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToSubmitHandler.java index 130cebf017..e856bee045 100644 --- a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToSubmitHandler.java +++ b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToSubmitHandler.java @@ -144,9 +144,7 @@ private SscsCaseData updateCaseAfterExtensionRefused(SscsCaseData caseData, Inte private SscsCaseData updateCaseForDirectionType(CaseDetails caseDetails, SscsCaseData caseData, SscsDocumentTranslationStatus documentTranslationStatus) { if (DirectionType.PROVIDE_INFORMATION.toString().equals(caseData.getDirectionTypeDl().getValue().getCode())) { - caseData.setInterlocReviewState(AWAITING_INFORMATION); - } else if (getPreValidStates().contains(caseDetails.getState()) && DirectionType.APPEAL_TO_PROCEED.toString().equals(caseData.getDirectionTypeDl().getValue().getCode())) { caseData.setDateSentToDwp(LocalDate.now().toString()); @@ -161,29 +159,22 @@ private SscsCaseData updateCaseForDirectionType(CaseDetails caseDe } else if (DirectionType.REFUSE_EXTENSION.toString().equals(caseData.getDirectionTypeDl().getValue().getCode()) && ExtensionNextEvent.SEND_TO_LISTING.toString().equals(caseData.getExtensionNextEventDl().getValue().getCode())) { caseData = updateCaseAfterExtensionRefused(caseData, AWAITING_ADMIN_ACTION, State.RESPONSE_RECEIVED); - } else if (DirectionType.REFUSE_EXTENSION.toString().equals(caseData.getDirectionTypeDl().getValue().getCode()) && ExtensionNextEvent.SEND_TO_VALID_APPEAL.toString().equals(caseData.getExtensionNextEventDl().getValue().getCode())) { caseData = updateCaseAfterExtensionRefused(caseData, null, State.WITH_DWP); - } else if (DirectionType.GRANT_REINSTATEMENT.toString().equals(caseData.getDirectionTypeDl().getValue().getCode())) { caseData = updateCaseAfterReinstatementGranted(caseData, documentTranslationStatus); - } else if (DirectionType.REFUSE_REINSTATEMENT.toString().equals(caseData.getDirectionTypeDl().getValue().getCode())) { caseData = updateCaseAfterReinstatementRefused(caseData, documentTranslationStatus); - } else if (!SscsDocumentTranslationStatus.TRANSLATION_REQUIRED.equals(documentTranslationStatus) && DirectionType.GRANT_URGENT_HEARING.toString().equals(caseData.getDirectionTypeDl().getValue().getCode())) { caseData = updateCaseAfterUrgentHearingGranted(caseData); - } else if (!SscsDocumentTranslationStatus.TRANSLATION_REQUIRED.equals(documentTranslationStatus) && DirectionType.REFUSE_URGENT_HEARING.toString().equals(caseData.getDirectionTypeDl().getValue().getCode())) { caseData = updateCaseAfterUrgentHearingRefused(caseData); - } else if (DirectionType.REFUSE_HEARING_RECORDING_REQUEST.toString().equals(caseData.getDirectionTypeDl().getValue().getCode())) { caseData.setInterlocReviewState(AWAITING_ADMIN_ACTION); caseData.setInterlocReferralReason(REJECT_HEARING_RECORDING_REQUEST); - } else { caseData.setInterlocReviewState(null); } @@ -197,15 +188,12 @@ private int getResponseDueDays(SscsCaseData caseData) { } private SscsCaseData updateCaseAfterReinstatementGranted(SscsCaseData caseData, SscsDocumentTranslationStatus documentTranslationStatus) { - if (!SscsDocumentTranslationStatus.TRANSLATION_REQUIRED.equals(documentTranslationStatus)) { caseData.setReinstatementOutcome(RequestOutcome.GRANTED); caseData.setDwpState(DwpState.REINSTATEMENT_GRANTED); updateStateIfInterLockReviewState(caseData); - log.info("Case ID {} reinstatement granted on {}", caseData.getCcdCaseId(), LocalDate.now().toString()); - } else { log.info("Case ID {} reinstatement granted held pending Direction Translation {}", caseData.getCcdCaseId(), LocalDate.now().toString()); } @@ -224,7 +212,6 @@ private boolean hasFtaBeenChosenAsOneOfThePartyMembers(SscsCaseData caseData) { } private SscsCaseData updateCaseAfterReinstatementRefused(SscsCaseData caseData, SscsDocumentTranslationStatus documentTranslationStatus) { - if (!SscsDocumentTranslationStatus.TRANSLATION_REQUIRED.equals(documentTranslationStatus)) { caseData.setReinstatementOutcome(RequestOutcome.REFUSED); caseData.setDwpState(DwpState.REINSTATEMENT_REFUSED); @@ -236,7 +223,6 @@ private SscsCaseData updateCaseAfterReinstatementRefused(SscsCaseData caseData, } private SscsCaseData updateCaseAfterUrgentHearingGranted(SscsCaseData caseData) { - caseData.setUrgentHearingOutcome(RequestOutcome.GRANTED.getValue()); caseData.setInterlocReviewState(AWAITING_ADMIN_ACTION); log.info("Case ID {} urgent hearing granted on {}", caseData.getCcdCaseId(), LocalDate.now().toString()); @@ -244,7 +230,6 @@ private SscsCaseData updateCaseAfterUrgentHearingGranted(SscsCaseData caseData) } private SscsCaseData updateCaseAfterUrgentHearingRefused(SscsCaseData caseData) { - caseData.setUrgentHearingOutcome(RequestOutcome.REFUSED.getValue()); caseData.setUrgentCase("No"); caseData.setInterlocReviewState(NONE); @@ -266,7 +251,6 @@ private void updateStateIfInterLockReviewState(SscsCaseData caseData) { @NotNull private PreSubmitCallbackResponse validateForPdfAndCreateCallbackResponse( Callback callback, CaseDetails caseDetails, SscsCaseData caseData, SscsDocumentTranslationStatus documentTranslationStatus) { - final PreSubmitCallbackResponse sscsCaseDataPreSubmitCallbackResponse = new PreSubmitCallbackResponse<>(caseData); @@ -299,7 +283,6 @@ private PreSubmitCallbackResponse buildResponse(Callback sscsCaseDataPreSubmitCallbackResponse, DocumentLink url, SscsDocumentTranslationStatus documentTranslationStatus) { - if (isPostHearingsEnabled) { clearInterlocReferralReason(caseData); } @@ -344,10 +327,6 @@ private PreSubmitCallbackResponse buildResponse(Callback callback) { requireNonNull(callback, "callback must not be null"); - requireNonNull(callbackType, "callbacktype must not be null"); + requireNonNull(callbackType, "callbackType must not be null"); return callbackType.equals(CallbackType.ABOUT_TO_SUBMIT) - && (callback.getEvent() == EventType.INTERLOC_SEND_TO_TCW - ); + && (callback.getEvent() == EventType.INTERLOC_SEND_TO_TCW); } @Override @@ -38,8 +37,6 @@ public PreSubmitCallbackResponse handle(CallbackType callbackType, caseData.setDirectionDueDate(null); - PreSubmitCallbackResponse sscsCaseDataPreSubmitCallbackResponse = new PreSubmitCallbackResponse<>(caseData); - - return sscsCaseDataPreSubmitCallbackResponse; + return new PreSubmitCallbackResponse<>(caseData); } } diff --git a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/sendtojudge/SendToJudgeAboutToStartHandler.java b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/sendtojudge/SendToJudgeAboutToStartHandler.java new file mode 100644 index 0000000000..140fef5005 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/sendtojudge/SendToJudgeAboutToStartHandler.java @@ -0,0 +1,46 @@ +package uk.gov.hmcts.reform.sscs.ccd.presubmit.sendtojudge; + +import static java.util.Objects.requireNonNull; + +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.EventType; +import uk.gov.hmcts.reform.sscs.ccd.domain.SscsCaseData; +import uk.gov.hmcts.reform.sscs.ccd.presubmit.PreSubmitCallbackHandler; + +@Component +@Slf4j +public class SendToJudgeAboutToStartHandler implements PreSubmitCallbackHandler { + private final boolean postHearingsB; + + public SendToJudgeAboutToStartHandler(@Value("${feature.postHearingsB.enabled}") boolean postHearingsB) { + this.postHearingsB = postHearingsB; + } + + @Override + public boolean canHandle(CallbackType callbackType, Callback callback) { + requireNonNull(callback, "callback must not be null"); + requireNonNull(callbackType, "callbackType must not be null"); + + return callbackType.equals(CallbackType.ABOUT_TO_START) + && (callback.getEvent() == EventType.TCW_REFER_TO_JUDGE); + } + + @Override + public PreSubmitCallbackResponse handle(CallbackType callbackType, Callback callback, String userAuthorisation) { + if (!canHandle(callbackType, callback)) { + throw new IllegalStateException("Cannot handle callback"); + } + + SscsCaseData sscsCaseData = callback.getCaseDetails().getCaseData(); + if (postHearingsB) { + sscsCaseData.setPrePostHearing(null); + } + + return new PreSubmitCallbackResponse<>(sscsCaseData); + } +} diff --git a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToStartHandler.java b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToStartHandler.java index 416930e4ab..d6465ab01d 100644 --- a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToStartHandler.java +++ b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToStartHandler.java @@ -20,15 +20,18 @@ public class ValidSendToInterlocAboutToStartHandler implements PreSubmitCallbackHandler { private final boolean postponementsFeature; + private final boolean postHearingsB; - public ValidSendToInterlocAboutToStartHandler(@Value("${feature.postponements.enabled}") boolean postponementsFeature) { + public ValidSendToInterlocAboutToStartHandler(@Value("${feature.postponements.enabled}") boolean postponementsFeature, + @Value("${feature.postHearingsB.enabled}") boolean postHearingsB) { this.postponementsFeature = postponementsFeature; + this.postHearingsB = postHearingsB; } @Override public boolean canHandle(CallbackType callbackType, Callback callback) { requireNonNull(callback, "callback must not be null"); - requireNonNull(callbackType, "callbacktype must not be null"); + requireNonNull(callbackType, "callbackType must not be null"); return callbackType.equals(CallbackType.ABOUT_TO_START) && (callback.getEvent() == EventType.VALID_SEND_TO_INTERLOC @@ -47,6 +50,10 @@ public PreSubmitCallbackResponse handle(CallbackType callbackType, setSelectWhoReviewsCase(sscsCaseData); setOriginalSenderDropdown(sscsCaseData); + if (postHearingsB) { + sscsCaseData.setPrePostHearing(null); + } + return new PreSubmitCallbackResponse<>(sscsCaseData); } @@ -67,5 +74,4 @@ private void setOriginalSenderDropdown(SscsCaseData sscsCaseData) { sscsCaseData.setOriginalSender(new DynamicList(listOptions.get(0), listOptions)); } - } diff --git a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToSubmitHandler.java b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToSubmitHandler.java index 70b742ccda..6e975a9889 100644 --- a/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToSubmitHandler.java +++ b/src/main/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToSubmitHandler.java @@ -31,7 +31,7 @@ public ValidSendToInterlocAboutToSubmitHandler(PostponementRequestService postpo @Override public boolean canHandle(CallbackType callbackType, Callback callback) { requireNonNull(callback, "callback must not be null"); - requireNonNull(callbackType, "callbacktype must not be null"); + requireNonNull(callbackType, "callbackType must not be null"); return callbackType.equals(CallbackType.ABOUT_TO_SUBMIT) && (callback.getEvent() == EventType.VALID_SEND_TO_INTERLOC diff --git a/src/main/java/uk/gov/hmcts/reform/sscs/config/CitizenCcdClient.java b/src/main/java/uk/gov/hmcts/reform/sscs/config/CitizenCcdClient.java index b2b70d5f71..f7ddffcea0 100644 --- a/src/main/java/uk/gov/hmcts/reform/sscs/config/CitizenCcdClient.java +++ b/src/main/java/uk/gov/hmcts/reform/sscs/config/CitizenCcdClient.java @@ -93,10 +93,7 @@ public List searchForCitizen(IdamTokens idamTokens) { public List searchForCitizenAllCases(IdamTokens idamTokens) { if (elasticSearchEnabled) { - String searchCriteria = "{" - + " \"query\" : {\n" - + " \"match_all\" : {}\n" - + " }"; + String searchCriteria = "{\"query\":{\"match_all\":{}}}"; SearchResult searchResult = coreCaseDataApi.searchCases( idamTokens.getIdamOauth2Token(), idamTokens.getServiceAuthorization(), diff --git a/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToStartHandlerTest.java b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToStartHandlerTest.java index 55dcaeff78..d66d74de3f 100644 --- a/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToStartHandlerTest.java +++ b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToStartHandlerTest.java @@ -43,7 +43,7 @@ public class DirectionIssuedAboutToStartHandlerTest { @Before public void setUp() { openMocks(this); - handler = new DirectionIssuedAboutToStartHandler(); + handler = new DirectionIssuedAboutToStartHandler(false); sscsCaseData = SscsCaseData.builder().appeal(Appeal.builder().mrnDetails(MrnDetails.builder().dwpIssuingOffice("3").build()).build()).build(); @@ -141,8 +141,7 @@ public void givenAppealWithTimeExtension_populateDirectionTypeDropdown() { @Test public void givenAppealWithReinstatementRequest_populateDirectionTypeDropdown() { - - handler = new DirectionIssuedAboutToStartHandler(); + handler = new DirectionIssuedAboutToStartHandler(false); when(callback.getEvent()).thenReturn(EventType.DIRECTION_ISSUED); when(callback.getCaseDetails().getState()).thenReturn(State.WITH_DWP); @@ -238,7 +237,7 @@ public void givenAppealWithNoTimeExtension_populateDirectionTypeDropdown() { @Test public void givenAppealWithHearingRecordingRequestOutstanding_populateDirectionTypeDropdownWithRefuseHearingRecordingRequest() { - handler = new DirectionIssuedAboutToStartHandler(); + handler = new DirectionIssuedAboutToStartHandler(false); when(callback.getEvent()).thenReturn(EventType.DIRECTION_ISSUED); when(callback.getCaseDetails().getState()).thenReturn(State.WITH_DWP); @@ -258,7 +257,7 @@ public void givenAppealWithHearingRecordingRequestOutstanding_populateDirectionT @Test public void givenAppealWithNoHearingRecordingRequestOutstanding_doNotPopulateDirectionTypeDropdownWithRefuseHearingRecordingRequest() { - handler = new DirectionIssuedAboutToStartHandler(); + handler = new DirectionIssuedAboutToStartHandler(false); when(callback.getEvent()).thenReturn(EventType.DIRECTION_ISSUED); when(callback.getCaseDetails().getState()).thenReturn(State.WITH_DWP); @@ -277,7 +276,7 @@ public void givenAppealWithNoHearingRecordingRequestOutstanding_doNotPopulateDir @Test public void givenAValidCallbackType_thenClearTheConfidentialityFields() { - handler = new DirectionIssuedAboutToStartHandler(); + handler = new DirectionIssuedAboutToStartHandler(false); sscsCaseData.setConfidentialityType(ConfidentialityType.CONFIDENTIAL.getCode()); sscsCaseData.setSendDirectionNoticeToFTA(YES); sscsCaseData.setSendDirectionNoticeToRepresentative(YES); @@ -301,7 +300,7 @@ public void givenAValidCallbackType_thenClearTheConfidentialityFields() { @Test public void givenAValidCallbackType_thenVerifyAllPartiesOnTheCase() { - handler = new DirectionIssuedAboutToStartHandler(); + handler = new DirectionIssuedAboutToStartHandler(false); Appointee otherPartyAppointee = Appointee.builder() .id("2") @@ -341,7 +340,7 @@ public void givenAValidCallbackType_thenVerifyAllPartiesOnTheCase() { @Test public void givenAValidCallbackType_NoAdditionalPartiesForOtherParty() { - handler = new DirectionIssuedAboutToStartHandler(); + handler = new DirectionIssuedAboutToStartHandler(false); CcdValue otherParty = CcdValue.builder() .value(OtherParty.builder() diff --git a/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToSubmitHandlerTest.java b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToSubmitHandlerTest.java index bc4bcf8ef7..04fd8208c5 100644 --- a/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToSubmitHandlerTest.java +++ b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/directionissued/DirectionIssuedAboutToSubmitHandlerTest.java @@ -203,7 +203,6 @@ public void givenDirectionNoticeAlreadyExistsAndThenManuallyUploadANewNotice_the handler.handle(ABOUT_TO_SUBMIT, callback, USER_AUTHORISATION); verify(footerService).createFooterAndAddDocToCase(eq(theDocument.getDocumentLink()), any(), eq(DocumentType.DIRECTION_NOTICE), any(), eq(theDocument.getDocumentDateAdded()), eq(null), eq(null)); - assertNull(sscsCaseData.getPrePostHearing()); } public void willSetTheWithDwpStateToDirectionActionRequired() { diff --git a/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/posthearingreview/PostHearingReviewMidEventHandlerTest.java b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/posthearingreview/PostHearingReviewMidEventHandlerTest.java index 60282ba644..3802f14181 100644 --- a/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/posthearingreview/PostHearingReviewMidEventHandlerTest.java +++ b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/posthearingreview/PostHearingReviewMidEventHandlerTest.java @@ -115,6 +115,7 @@ void givenPostHearingsEnabledFalse_thenReturnFalse() { @EnumSource( value = PostHearingReviewType.class, names = { + "SET_ASIDE", "STATEMENT_OF_REASONS", "LIBERTY_TO_APPLY", "PERMISSION_TO_APPEAL" @@ -160,6 +161,48 @@ void givenLanguagePreferenceIsEnglish_NoticeIsGeneratedAndPopulatedInPreviewDocu assertThat(value.getTemplateId()).isEqualTo(TEMPLATE_ID); } + @Test + void givenLanguagePreferenceIsEnglish_NoticeIsGeneratedAndPopulatedInPreviewDocumentFieldForPtaReview() { + when(callback.getCaseDetails()).thenReturn(caseDetails); + when(caseDetails.getCaseData()).thenReturn(caseData); + + when(generateFile.assemble(any())).thenReturn(URL); + when(callback.getPageId()).thenReturn(PAGE_ID_GENERATE_NOTICE); + + when(documentConfiguration.getDocuments()).thenReturn(new HashMap<>(Map.of( + LanguagePreference.ENGLISH, new HashMap<>(Map.of( + DECISION_ISSUED, TEMPLATE_ID) + )) + )); + + caseData.getPostHearing().setReviewType(PostHearingReviewType.PERMISSION_TO_APPEAL); + caseData.getPostHearing().getPermissionToAppeal().setAction(PermissionToAppealActions.REVIEW); + + final PreSubmitCallbackResponse response = handler.handle(MID_EVENT, callback, USER_AUTHORISATION); + + assertThat(response.getErrors()).isEmpty(); + DocumentLink previewDocument = response.getData().getDocumentStaging().getPostHearingPreviewDocument(); + assertThat(previewDocument).isNotNull(); + + String expectedFilename = String.format("Review Granted issued on %s.pdf", + LocalDate.now().format(DateTimeFormatter.ofPattern("dd-MM-yyyy"))); + + assertThat(previewDocument.getDocumentFilename()).isEqualTo(expectedFilename); + assertThat(previewDocument.getDocumentBinaryUrl()).isEqualTo(URL + "/binary"); + assertThat(previewDocument.getDocumentUrl()).isEqualTo(URL); + + verify(generateFile, times(1)).assemble(any()); + + verify(generateFile, atLeastOnce()).assemble(capture.capture()); + + var value = capture.getValue(); + NoticeIssuedTemplateBody payload = (NoticeIssuedTemplateBody) value.getFormPayload(); + assertThat(payload.getImage()).isEqualTo(NoticeIssuedTemplateBody.ENGLISH_IMAGE); + assertThat(payload.getNoticeType()).isEqualTo("REVIEW DECISION NOTICE"); + assertThat(payload.getAppellantFullName()).isEqualTo("Appellant Lastname"); + assertThat(value.getTemplateId()).isEqualTo(TEMPLATE_ID); + } + @Test void givenReviewTypeIsNull_NoticeUsesDefaultDecisionNoticeName() { when(callback.getCaseDetails()).thenReturn(caseDetails); diff --git a/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/sendtojudge/SendToJudgeAboutToStartHandlerTest.java b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/sendtojudge/SendToJudgeAboutToStartHandlerTest.java new file mode 100644 index 0000000000..94986468c6 --- /dev/null +++ b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/sendtojudge/SendToJudgeAboutToStartHandlerTest.java @@ -0,0 +1,78 @@ +package uk.gov.hmcts.reform.sscs.ccd.presubmit.sendtojudge; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.when; +import static uk.gov.hmcts.reform.sscs.ccd.callback.CallbackType.ABOUT_TO_START; +import static uk.gov.hmcts.reform.sscs.ccd.domain.EventType.TCW_REFER_TO_JUDGE; + +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.EnumSource; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.util.ReflectionTestUtils; +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.domain.*; + +@ExtendWith(MockitoExtension.class) +public class SendToJudgeAboutToStartHandlerTest { + private static final String USER_AUTHORISATION = "Bearer token"; + + private SendToJudgeAboutToStartHandler handler; + + @Mock + private Callback callback; + + @Mock + private CaseDetails caseDetails; + + private SscsCaseData sscsCaseData; + + @BeforeEach + public void setUp() { + handler = new SendToJudgeAboutToStartHandler(false); + sscsCaseData = SscsCaseData.builder() + .appeal(Appeal.builder().mrnDetails(MrnDetails.builder().dwpIssuingOffice("3").build()).build()) + .prePostHearing(PrePostHearing.POST) + .build(); + } + + @ParameterizedTest + @EnumSource(value = EventType.class, names = {"APPEAL_RECEIVED", "ACTION_FURTHER_EVIDENCE"}) + void givenANonHandleEvidenceEvent_thenReturnFalse(EventType eventType) { + when(callback.getEvent()).thenReturn(eventType); + assertFalse(handler.canHandle(ABOUT_TO_START, callback)); + } + + @ParameterizedTest + @EnumSource(value = CallbackType.class, names = {"ABOUT_TO_SUBMIT", "MID_EVENT", "SUBMITTED"}) + void givenANonCallbackType_thenReturnFalse(CallbackType callbackType) { + assertFalse(handler.canHandle(callbackType, callback)); + } + + + @Test + void givenPostHearingsBisNotEnabled_thenDontCleanPrePostHearingField() { + setupCallback(); + var result = handler.handle(ABOUT_TO_START, callback, USER_AUTHORISATION); + assertEquals(result.getData().getPrePostHearing(), PrePostHearing.POST); + } + + @Test + void givenPostHearingsBisEnabled_thenCleanPrePostHearingField() { + setupCallback(); + ReflectionTestUtils.setField(handler, "postHearingsB", true); + var result = handler.handle(ABOUT_TO_START, callback, USER_AUTHORISATION); + assertNull(result.getData().getPrePostHearing()); + } + + private void setupCallback() { + when(callback.getEvent()).thenReturn(TCW_REFER_TO_JUDGE); + when(callback.getCaseDetails()).thenReturn(caseDetails); + when(caseDetails.getCaseData()).thenReturn(sscsCaseData); + } + +} diff --git a/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToStartHandlerTest.java b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToStartHandlerTest.java index 5c6f1d4ac7..e27f94039b 100644 --- a/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToStartHandlerTest.java +++ b/src/test/java/uk/gov/hmcts/reform/sscs/ccd/presubmit/validsendtointerloc/ValidSendToInterlocAboutToStartHandlerTest.java @@ -1,9 +1,8 @@ package uk.gov.hmcts.reform.sscs.ccd.presubmit.validsendtointerloc; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.mockito.Mockito.when; -import static org.mockito.MockitoAnnotations.openMocks; import static uk.gov.hmcts.reform.sscs.ccd.callback.CallbackType.ABOUT_TO_START; import static uk.gov.hmcts.reform.sscs.ccd.domain.EventType.VALID_SEND_TO_INTERLOC; import static uk.gov.hmcts.reform.sscs.ccd.domain.YesNo.YES; @@ -13,19 +12,20 @@ import java.util.ArrayList; import java.util.List; -import junitparams.JUnitParamsRunner; -import junitparams.Parameters; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +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.EnumSource; import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.test.util.ReflectionTestUtils; 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.*; -@RunWith(JUnitParamsRunner.class) +@ExtendWith(MockitoExtension.class) public class ValidSendToInterlocAboutToStartHandlerTest { private static final String USER_AUTHORISATION = "Bearer token"; @@ -40,35 +40,36 @@ public class ValidSendToInterlocAboutToStartHandlerTest { private SscsCaseData sscsCaseData; - @Before + @BeforeEach public void setUp() { - openMocks(this); - handler = new ValidSendToInterlocAboutToStartHandler(false); - + handler = new ValidSendToInterlocAboutToStartHandler(false, false); sscsCaseData = SscsCaseData.builder().appeal(Appeal.builder().mrnDetails(MrnDetails.builder().dwpIssuingOffice("3").build()).build()).build(); + } + private void setupCallback() { + when(callback.getEvent()).thenReturn(VALID_SEND_TO_INTERLOC); when(callback.getCaseDetails()).thenReturn(caseDetails); when(caseDetails.getCaseData()).thenReturn(sscsCaseData); - when(callback.getEvent()).thenReturn(VALID_SEND_TO_INTERLOC); } - @Test - @Parameters({"APPEAL_RECEIVED", "ACTION_FURTHER_EVIDENCE"}) - public void givenANonHandleEvidenceEvent_thenReturnFalse(EventType eventType) { + @ParameterizedTest + @EnumSource(value = EventType.class, names = {"APPEAL_RECEIVED", "ACTION_FURTHER_EVIDENCE"}) + void givenANonHandleEvidenceEvent_thenReturnFalse(EventType eventType) { when(callback.getEvent()).thenReturn(eventType); assertFalse(handler.canHandle(ABOUT_TO_START, callback)); } - @Test - @Parameters({"ABOUT_TO_SUBMIT", "MID_EVENT", "SUBMITTED"}) - public void givenANonCallbackType_thenReturnFalse(CallbackType callbackType) { + @ParameterizedTest + @EnumSource(value = CallbackType.class, names = {"ABOUT_TO_SUBMIT", "MID_EVENT", "SUBMITTED"}) + void givenANonCallbackType_thenReturnFalse(CallbackType callbackType) { assertFalse(handler.canHandle(callbackType, callback)); } - @Test - @Parameters({"VALID_SEND_TO_INTERLOC", "ADMIN_SEND_TO_INTERLOCUTORY_REVIEW_STATE"}) - public void populatesSelectWhoReviewsCaseDropDown(EventType eventType) { + @ParameterizedTest + @EnumSource(value = EventType.class, names = {"VALID_SEND_TO_INTERLOC", "ADMIN_SEND_TO_INTERLOCUTORY_REVIEW_STATE"}) + void populatesSelectWhoReviewsCaseDropDown(EventType eventType) { when(callback.getEvent()).thenReturn(eventType); + setupCallback(); List listOptions = new ArrayList<>(); listOptions.add(new DynamicListItem(REVIEW_BY_TCW.getId(), REVIEW_BY_TCW.getLabel())); @@ -80,12 +81,13 @@ public void populatesSelectWhoReviewsCaseDropDown(EventType eventType) { assertEquals(expected, response.getData().getSelectWhoReviewsCase()); } - @Test - @Parameters({"VALID_SEND_TO_INTERLOC", "ADMIN_SEND_TO_INTERLOCUTORY_REVIEW_STATE"}) + @ParameterizedTest + @EnumSource(value = EventType.class, names = {"VALID_SEND_TO_INTERLOC", "ADMIN_SEND_TO_INTERLOCUTORY_REVIEW_STATE"}) public void givenPostponementsFeatureOn_populatesSelectWhoReviewsCaseDropDown(EventType eventType) { ReflectionTestUtils.setField(handler, "postponementsFeature", true); when(callback.getEvent()).thenReturn(eventType); + setupCallback(); List listOptions = new ArrayList<>(); listOptions.add(new DynamicListItem(REVIEW_BY_TCW.getId(), REVIEW_BY_TCW.getLabel())); @@ -100,6 +102,7 @@ public void givenPostponementsFeatureOn_populatesSelectWhoReviewsCaseDropDown(Ev @Test public void givenAValidSendToInterlocRequestWithRep_thenPopulateDropdownWithPartiesOnCase() { + setupCallback(); sscsCaseData.getAppeal().setRep(Representative.builder().hasRepresentative("Yes").build()); PreSubmitCallbackResponse response = handler.handle(ABOUT_TO_START, callback, USER_AUTHORISATION); @@ -117,6 +120,7 @@ public void givenAValidSendToInterlocRequestWithRep_thenPopulateDropdownWithPart @Test public void givenAValidSendToInterlocRequestWithJointParty_thenPopulateDropdownWithPartiesOnCase() { + setupCallback(); sscsCaseData.getJointParty().setHasJointParty(YES); PreSubmitCallbackResponse response = handler.handle(ABOUT_TO_START, callback, USER_AUTHORISATION); @@ -134,6 +138,7 @@ public void givenAValidSendToInterlocRequestWithJointParty_thenPopulateDropdownW @Test public void givenAValidSendToInterlocRequestWithJointPartyAndRep_thenPopulateDropdownWithPartiesOnCase() { + setupCallback(); sscsCaseData.getJointParty().setHasJointParty(YES); sscsCaseData.getAppeal().setRep(Representative.builder().hasRepresentative("Yes").build()); @@ -152,5 +157,4 @@ public void givenAValidSendToInterlocRequestWithJointPartyAndRep_thenPopulateDro assertEquals(new DynamicList(expectedListItem1, expectedList), response.getData().getOriginalSender()); } - }