Skip to content

Commit

Permalink
Minimal handling to reject updates with Other stop.
Browse files Browse the repository at this point in the history
  • Loading branch information
tom-saunders-cts committed Jan 27, 2025
1 parent 1c0c9a3 commit 96a3bd5
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -203,9 +203,9 @@
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "solicitorReviewAndConfirm", "CaseFieldID": "solsAmendLegalStatmentSelect", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "solicitorConfirmPage4", "PageDisplayOrder": 7, "PageShowCondition": "solsSOTNeedToUpdate=\"Yes\"", "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "solicitorReviewAndConfirm", "CaseFieldID": "solsAmendLegalStatmentInfo", "PageFieldDisplayOrder": 2, "DisplayContext": "READONLY", "PageID": "solicitorConfirmPage4", "PageDisplayOrder": 7, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boPrintCase", "CaseFieldID": "casePrinted", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "casePrintedPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCase", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCasePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForCaseMatching", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForCaseMatchingPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForCaseMatchingForExamining", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForCaseMatchingExamP1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCase", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCasePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForCaseMatching", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForCaseMatchingPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForCaseMatchingForExamining", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForCaseMatchingExamP1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boMarkAsReadyForExamination", "CaseFieldID": "boEmailDocsReceivedNotification", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boMarkAsReadyForExaminationPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boFindMatchesNoQA", "CaseFieldID": "caseMatches", "PageFieldDisplayOrder": 1, "DisplayContext": "COMPLEX", "PageID": "boFindMatchesNoQAPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boFindMatchesNoQA", "CaseFieldID": "matches", "PageFieldDisplayOrder": 0, "DisplayContext": "OPTIONAL", "PageID": "boFindMatchesNoQAPage1", "FieldShowCondition": "[STATE]=\"NeverShow\"", "ShowSummaryChangeOption": "y"},
Expand Down Expand Up @@ -403,7 +403,7 @@
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "paymentSuccessApp", "CaseFieldID": "applicationSubmittedDate", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boPaymentSuccessfulAppPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "paymentSuccessCase", "CaseFieldID": "applicationSubmittedDate", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boPaymentSuccessfulCasePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boUploadDocumentsForRegistrarEscalations", "CaseFieldID": "boDocumentsUploaded", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boUploadDocumentPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForRegistrarEscalations", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCasePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForRegistrarEscalations", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCasePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boFindMatchesForRegistrarEscalations", "CaseFieldID": "caseMatches", "PageFieldDisplayOrder": 1, "DisplayContext": "COMPLEX", "PageID": "boFindMatchesForRegistrarPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boFindMatchesForRegistrarEscalations", "CaseFieldID": "matches", "PageFieldDisplayOrder": 0, "DisplayContext": "OPTIONAL", "PageID": "boFindMatchesForRegistrarPage1", "FieldShowCondition": "[STATE]=\"NeverShow\"", "ShowSummaryChangeOption": "y"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boFindMatchedCaseForExamining", "CaseFieldID": "caseMatches", "PageFieldDisplayOrder": 1, "DisplayContext": "COMPLEX", "PageID": "boFindMatchesNoQAPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
Expand Down Expand Up @@ -3110,10 +3110,10 @@
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boFindMatchedCaseForGrantIssued","CaseFieldID": "caseMatches", "PageFieldDisplayOrder": 1, "DisplayContext": "COMPLEX", "PageID": "boFindMatchesPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boFindMatchedCaseForGrantIssued", "CaseFieldID": "matches", "PageFieldDisplayOrder": 0, "DisplayContext": "OPTIONAL", "PageID": "boFindMatchesPage1", "FieldShowCondition": "[STATE]=\"NeverShow\"", "ShowSummaryChangeOption": "y"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boResolveStop","CaseFieldID": "resolveStopState", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boResolveStopPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boResolveStop","CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 2, "DisplayContext": "READONLY", "PageID": "boResolveStopPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForCaseCreated","CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForCaseCreatedPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForCasePrinted","CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForCasePrintedPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForReadyForExamination","CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForReadyForExaminationPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boResolveStop","CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 2, "DisplayContext": "READONLY", "PageID": "boResolveStopPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForCaseCreated","CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForCaseCreatedPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForCasePrinted","CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForCasePrintedPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForReadyForExamination","CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boStopCaseForReadyForExaminationPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "uploadDocumentsDormantCase", "CaseFieldID": "boDocumentsUploaded", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boUploadDocumentPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "applyforGrantPaperApplicationMan", "CaseFieldID": "dateOfDeathAfterEstateSwitch", "PageFieldDisplayOrder": 0, "DisplayContext": "OPTIONAL", "PageID": "applyforGrantPaperApplicationManPage1", "PageDisplayOrder": 1, "FieldShowCondition": "[STATE]=\"NeverShow\"", "ShowSummaryChangeOption": "y", "RetainHiddenValue": "y"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "applyforGrantPaperApplicationMan", "CaseFieldID": "schemaVersion", "PageFieldDisplayOrder": 0, "DisplayContext": "OPTIONAL", "PageID": "applyforGrantPaperApplicationManPage1", "PageLabel": "Case Details", "PageDisplayOrder": 1, "FieldShowCondition": "[STATE]=\"NeverShow\"", "ShowSummaryChangeOption": "y", "RetainHiddenValue": "y"},
Expand Down Expand Up @@ -3362,8 +3362,8 @@
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boGrantReissue", "CaseFieldID": "reissueDate", "PageFieldDisplayOrder": 2, "DisplayContext": "MANDATORY", "PageID": "issueGrantPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boGrantReissue", "CaseFieldID": "boGrantReissueSendToBulkPrint", "PageFieldDisplayOrder": 3, "DisplayContext": "MANDATORY", "PageID": "issueGrantPage2", "PageDisplayOrder": 2, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boGrantReissue", "CaseFieldID": "boEmailGrantReissuedNotification", "PageFieldDisplayOrder": 4, "DisplayContext": "MANDATORY", "PageID": "issueGrantPage2", "PageDisplayOrder": 2, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForGrantReissueExamining", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "caseStoppedReissuePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForGrantReissueMatching", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "caseStoppedReissuePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForGrantReissueExamining", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "caseStoppedReissuePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boStopCaseForGrantReissueMatching", "CaseFieldID": "boCaseStopReasonList", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "caseStoppedReissuePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n", "CallBackURLMidEvent": "http://${CCD_DEF_CASE_SERVICE_BASE_URL}/case/validate-case-stopped/"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boResolveStopReissue", "CaseFieldID": "resolveStopReissueState", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "resolveStopReissuePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boUploadDocsForExaminingReissue", "CaseFieldID": "boDocumentsUploaded", "PageFieldDisplayOrder": 1, "DisplayContext": "MANDATORY", "PageID": "boUploadDocumentPage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
{"LiveFrom": "01/01/2017", "CaseTypeID": "GrantOfRepresentation", "CaseEventID": "boFindMatchedCaseForExaminingReissue", "CaseFieldID": "caseMatches", "PageFieldDisplayOrder": 1, "DisplayContext": "COMPLEX", "PageID": "boFindMatchesReissuePage1", "PageDisplayOrder": 1, "ShowSummaryChangeOption": "n"},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,38 @@ public ResponseEntity<CallbackResponse> validateCaseDetails(
return ResponseEntity.ok(response);
}

@PostMapping(
path = "/validation-case-stopped",
consumes = APPLICATION_JSON_VALUE,
produces = {APPLICATION_JSON_VALUE})
public ResponseEntity<CallbackResponse> validateCaseStopped(
@RequestBody final CallbackRequest callbackRequest,
final HttpServletRequest request
) {
logRequest(request.getRequestURI(), callbackRequest);

final Long caseId = callbackRequest.getCaseDetails().getId();
final CaseData caseData = callbackRequest.getCaseDetails().getData();

final List<String> stopReasons = caseData.getBoCaseStopReasonList()
.stream()
.map(c -> c.getValue().getCaseStopReason())
.toList();

if (stopReasons.contains("Other")) {
log.info("case {} is using Other stop reason, rejecting", caseId);
final CallbackResponse err = CallbackResponse.builder()
.errors(List.of("Do not use the 'NOT TO BE USED (Other)' stop reason"))
.build();
return ResponseEntity.ok(err);
}


final Optional<UserInfo> caseworkerInfo = userInfoService.getCaseworkerInfo();
final CallbackResponse response = callbackResponseTransformer.transformCase(callbackRequest, caseworkerInfo);
return ResponseEntity.ok(response);
}

@PostMapping(path = "/case-stopped", consumes = MediaType.APPLICATION_JSON_VALUE,
produces = {APPLICATION_JSON_VALUE})
public ResponseEntity<CallbackResponse> startDelayedNotificationPeriod(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
import uk.gov.hmcts.probate.model.ApplicationType;
import uk.gov.hmcts.probate.model.CaseOrigin;
import uk.gov.hmcts.probate.model.ccd.CCDData;
import uk.gov.hmcts.probate.model.ccd.raw.CollectionMember;
import uk.gov.hmcts.probate.model.ccd.raw.Document;
import uk.gov.hmcts.probate.model.ccd.raw.StopReason;
import uk.gov.hmcts.probate.model.ccd.raw.request.CallbackRequest;
import uk.gov.hmcts.probate.model.ccd.raw.request.CaseData;
import uk.gov.hmcts.probate.model.ccd.raw.request.CaseDetails;
Expand Down Expand Up @@ -1103,4 +1105,40 @@ void shouldTransformSuperUserMakeCaseForDormant() {
.superUserMakeCaseDormant(callbackRequestMock, CASEWORKER_USERINFO);
assertThat(response.getStatusCode(), is(HttpStatus.OK));
}

@Test
void validateStopReasonShouldReturnErrorWhenOtherStop() {
when(callbackRequestMock.getCaseDetails()).thenReturn(caseDetailsMock);
when(caseDetailsMock.getId()).thenReturn(1L);
when(caseDetailsMock.getData()).thenReturn(caseDataMock);

CollectionMember<StopReason> other = new CollectionMember<>(
"1",
StopReason.builder().caseStopReason("Other").build());

when(caseDataMock.getBoCaseStopReasonList()).thenReturn(List.of(other));

ResponseEntity<CallbackResponse> response =
underTest.validateCaseStopped(callbackRequestMock, httpServletRequest);

// TODO actual testing
}

@Test
void validateStopReasonShouldSucceedWhenNoOtherStop() {
when(callbackRequestMock.getCaseDetails()).thenReturn(caseDetailsMock);
when(caseDetailsMock.getId()).thenReturn(1L);
when(caseDetailsMock.getData()).thenReturn(caseDataMock);

CollectionMember<StopReason> noOther = new CollectionMember<>(
"1",
StopReason.builder().caseStopReason("NoOther").build());

when(caseDataMock.getBoCaseStopReasonList()).thenReturn(List.of(noOther));

ResponseEntity<CallbackResponse> response =
underTest.validateCaseStopped(callbackRequestMock, httpServletRequest);

// TODO actual testing
}
}

0 comments on commit 96a3bd5

Please sign in to comment.