From 89cc16e9b7e5f58f83fffa7c5e6c2758e2bd6bd5 Mon Sep 17 00:00:00 2001 From: Sam Walker Date: Mon, 13 Jan 2020 14:41:14 +0000 Subject: [PATCH] feat: add further directions to order flow (FPLA-1105) (#760) * feat: add directions to order generation flow (FPLA-1105) --- .../AuthorisationCaseField/court-admin.json | 7 + .../AuthorisationCaseField/judiciary.json | 7 + .../createOrder-PREPARE_FOR_HEARING.json | 15 ++ .../CaseEventToFields/createOrder.json | 15 ++ .../createOrderGatekeeping.json | 15 ++ ccd-definition/CaseField.json | 8 + .../ComplexTypes/1_furtherDirections.json | 19 +++ .../ComplexTypes/GeneratedOrder.json | 8 + .../templates/FL-PLW-GOR-ENG-00218.docx | Bin 43478 -> 40408 bytes e2e/pages/events/createOrderEvent.page.js | 10 ++ ...mctsAdministersCaseAfterSubmission_test.js | 3 + ...iaryAdministersCaseAfterSubmission_test.js | 3 + .../GeneratedOrderControllerTest.java | 142 +++++++++++++++--- .../controllers/GeneratedOrderController.java | 17 ++- .../gov/hmcts/reform/fpl/model/CaseData.java | 6 + .../reform/fpl/model/FurtherDirections.java | 11 ++ .../reform/fpl/model/GeneratedOrder.java | 1 + .../fpl/service/GeneratedOrderService.java | 1 + .../hmcts/reform/fpl/model/CaseDataTest.java | 30 ++++ .../service/GeneratedOrderServiceTest.java | 10 ++ 20 files changed, 302 insertions(+), 26 deletions(-) create mode 100644 ccd-definition/ComplexTypes/1_furtherDirections.json create mode 100644 service/src/main/java/uk/gov/hmcts/reform/fpl/model/FurtherDirections.java diff --git a/ccd-definition/AuthorisationCaseField/court-admin.json b/ccd-definition/AuthorisationCaseField/court-admin.json index 2b27d9237e8..4221ae181d9 100644 --- a/ccd-definition/AuthorisationCaseField/court-admin.json +++ b/ccd-definition/AuthorisationCaseField/court-admin.json @@ -363,6 +363,13 @@ "UserRole": "caseworker-publiclaw-courtadmin", "CRUD": "CRUD" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "orderFurtherDirections", + "UserRole": "caseworker-publiclaw-courtadmin", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/AuthorisationCaseField/judiciary.json b/ccd-definition/AuthorisationCaseField/judiciary.json index 0195c4b7a86..e2d9066803f 100644 --- a/ccd-definition/AuthorisationCaseField/judiciary.json +++ b/ccd-definition/AuthorisationCaseField/judiciary.json @@ -243,5 +243,12 @@ "CaseFieldID": "cmoEventId", "UserRole": "caseworker-publiclaw-judiciary", "CRUD": "CRU" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "orderFurtherDirections", + "UserRole": "caseworker-publiclaw-judiciary", + "CRUD": "CRUD" } ] diff --git a/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json b/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json index dc283ddc408..7db4062364e 100644 --- a/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json +++ b/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json @@ -39,5 +39,20 @@ "PageColumnNumber": 1, "ShowSummaryChangeOption": "Y", "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "createOrder-PREPARE_FOR_HEARING", + "CaseFieldID": "orderFurtherDirections", + "PageFieldDisplayOrder": 1, + "DisplayContext": "OPTIONAL", + "PageID": "FurtherDirections", + "PageLabel": " ", + "PageDisplayOrder": 4, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y", + "PageShowCondition": "orderTypeAndDocument.type!=\"BLANK_ORDER\"", + "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" } ] diff --git a/ccd-definition/CaseEventToFields/createOrder.json b/ccd-definition/CaseEventToFields/createOrder.json index 5a92d0ee15e..2680db90fbf 100644 --- a/ccd-definition/CaseEventToFields/createOrder.json +++ b/ccd-definition/CaseEventToFields/createOrder.json @@ -39,5 +39,20 @@ "PageColumnNumber": 1, "ShowSummaryChangeOption": "Y", "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "createOrder", + "CaseFieldID": "orderFurtherDirections", + "PageFieldDisplayOrder": 1, + "DisplayContext": "MANDATORY", + "PageID": "FurtherDirections", + "PageLabel": " ", + "PageDisplayOrder": 4, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y", + "PageShowCondition": "orderTypeAndDocument.type!=\"BLANK_ORDER\"", + "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" } ] diff --git a/ccd-definition/CaseEventToFields/createOrderGatekeeping.json b/ccd-definition/CaseEventToFields/createOrderGatekeeping.json index 036d7d50e6b..599f16e27f6 100644 --- a/ccd-definition/CaseEventToFields/createOrderGatekeeping.json +++ b/ccd-definition/CaseEventToFields/createOrderGatekeeping.json @@ -39,5 +39,20 @@ "PageColumnNumber": 1, "ShowSummaryChangeOption": "Y", "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "createOrderGatekeeping", + "CaseFieldID": "orderFurtherDirections", + "PageFieldDisplayOrder": 1, + "DisplayContext": "OPTIONAL", + "PageID": "FurtherDirections", + "PageLabel": " ", + "PageDisplayOrder": 4, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y", + "PageShowCondition": "orderTypeAndDocument.type!=\"BLANK_ORDER\"", + "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" } ] diff --git a/ccd-definition/CaseField.json b/ccd-definition/CaseField.json index 2c1730ec435..dd33e53d221 100644 --- a/ccd-definition/CaseField.json +++ b/ccd-definition/CaseField.json @@ -639,6 +639,14 @@ "FieldType": "OrderTypeAndDocument", "SecurityClassification": "Public" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "ID": "orderFurtherDirections", + "Label": "Further directions", + "FieldType": "FurtherDirections", + "SecurityClassification": "Public" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/ComplexTypes/1_furtherDirections.json b/ccd-definition/ComplexTypes/1_furtherDirections.json new file mode 100644 index 00000000000..b17edc10e5b --- /dev/null +++ b/ccd-definition/ComplexTypes/1_furtherDirections.json @@ -0,0 +1,19 @@ +[ + { + "LiveFrom": "01/01/2017", + "ID": "FurtherDirections", + "ListElementCode": "directionsNeeded", + "FieldType": "YesOrNo", + "ElementLabel": "Do you want to add further directions to the order?", + "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "FurtherDirections", + "ListElementCode": "directions", + "FieldType": "TextArea", + "ElementLabel": "Give details", + "SecurityClassification": "Public", + "FieldShowCondition": "directionsNeeded = \"Yes\"" + } +] diff --git a/ccd-definition/ComplexTypes/GeneratedOrder.json b/ccd-definition/ComplexTypes/GeneratedOrder.json index 0b0b96916e0..7d4c8b1356c 100644 --- a/ccd-definition/ComplexTypes/GeneratedOrder.json +++ b/ccd-definition/ComplexTypes/GeneratedOrder.json @@ -52,5 +52,13 @@ "FieldType": "JudgeAndLegalAdvisor", "ElementLabel": "Judge and legal advisor", "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "GeneratedOrder", + "ListElementCode": "furtherDirections", + "FieldType": "FurtherDirections", + "ElementLabel": "Directions", + "SecurityClassification": "Public" } ] diff --git a/docker/docmosis/templates/FL-PLW-GOR-ENG-00218.docx b/docker/docmosis/templates/FL-PLW-GOR-ENG-00218.docx index edc7777176288fce5f7ed0972d7145fbee993772..2fe1b3e7e432f61cf81a080354b421842364fd77 100644 GIT binary patch delta 9993 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 diff --git a/e2e/pages/events/createOrderEvent.page.js b/e2e/pages/events/createOrderEvent.page.js index 601c28fd89f..32597c13993 100644 --- a/e2e/pages/events/createOrderEvent.page.js +++ b/e2e/pages/events/createOrderEvent.page.js @@ -7,6 +7,11 @@ module.exports = { title: '#order_title', details: '#order_details', orderTypeList: '#orderTypeAndDocument_type', + directionsNeeded: { + yes: '#orderFurtherDirections_directionsNeeded-Yes', + no: '#orderFurtherDirections_directionsNeeded-No', + }, + directions: '#orderFurtherDirections_directions', }, selectType(type) { @@ -25,4 +30,9 @@ module.exports = { judgeAndLegalAdvisor.enterJudgeLastName(judgeLastName); judgeAndLegalAdvisor.enterLegalAdvisorName(legalAdvisorName); }, + + enterDirections(directions) { + I.click(this.fields.directionsNeeded.yes); + I.fillField(this.fields.directions, directions); + }, }; diff --git a/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js b/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js index 0ccb521c67f..59dff73170c 100644 --- a/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js +++ b/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js @@ -161,8 +161,11 @@ Scenario('HMCTS admin creates multiple orders for the case', async (I, caseViewP await createOrderEventPage.selectType(orders[1].type); await I.retryUntilExists(() => I.click('Continue'), '#judgeAndLegalAdvisor_judgeTitle'); await createOrderEventPage.enterJudgeAndLegalAdvisor(orders[1].judgeAndLegalAdvisor.judgeLastName, orders[1].judgeAndLegalAdvisor.legalAdvisorName); + await I.retryUntilExists(() => I.click('Continue'), '#orderFurtherDirections_directionsNeeded'); + await createOrderEventPage.enterDirections('example directions'); await I.completeEvent('Save and continue'); orderTime = new Date(); + I.seeEventSubmissionConfirmation(config.administrationActions.createOrder); caseViewPage.selectTab(caseViewPage.tabs.orders); I.seeAnswerInTab(1, 'Order 2', 'Type of order', orders[1].type); diff --git a/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js b/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js index 9c0de4d9b82..9fa4137de4d 100644 --- a/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js +++ b/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js @@ -97,8 +97,11 @@ Scenario('Judiciary creates multiple orders for the case', async (I, caseViewPag await createOrderEventPage.selectType(orders[1].type); await I.retryUntilExists(() => I.click('Continue'), '#judgeAndLegalAdvisor_judgeTitle'); await createOrderEventPage.enterJudgeAndLegalAdvisor(orders[1].judgeAndLegalAdvisor.judgeLastName, orders[1].judgeAndLegalAdvisor.legalAdvisorName); + await I.retryUntilExists(() => I.click('Continue'), '#orderFurtherDirections_directionsNeeded'); + await createOrderEventPage.enterDirections('example directions'); await I.completeEvent('Save and continue'); orderTime = new Date(); + I.seeEventSubmissionConfirmation(config.administrationActions.createOrder); caseViewPage.selectTab(caseViewPage.tabs.orders); I.seeAnswerInTab(1, 'Order 2', 'Type of order', orders[1].type); diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/GeneratedOrderControllerTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/GeneratedOrderControllerTest.java index dd25433397e..bb77aab7b9a 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/GeneratedOrderControllerTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/GeneratedOrderControllerTest.java @@ -1,6 +1,10 @@ package uk.gov.hmcts.reform.fpl.controllers; +import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.collect.ImmutableMap; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration; @@ -12,7 +16,9 @@ import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; import uk.gov.hmcts.reform.document.domain.Document; import uk.gov.hmcts.reform.fpl.model.CaseData; +import uk.gov.hmcts.reform.fpl.model.FurtherDirections; import uk.gov.hmcts.reform.fpl.model.GeneratedOrder; +import uk.gov.hmcts.reform.fpl.model.OrderTypeAndDocument; import uk.gov.hmcts.reform.fpl.model.common.DocmosisDocument; import uk.gov.hmcts.reform.fpl.model.common.DocumentReference; import uk.gov.hmcts.reform.fpl.model.common.Element; @@ -32,6 +38,8 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static uk.gov.hmcts.reform.fpl.CaseDefinitionConstants.CASE_TYPE; @@ -86,27 +94,6 @@ void aboutToStartShouldReturnErrorsWhenFamilymanNumberIsNotProvided() { assertThat(callbackResponse.getErrors()).containsExactly("Enter Familyman case number"); } - @Test - void midEventShouldGenerateOrderDocument() throws Exception { - byte[] pdf = {1, 2, 3, 4, 5}; - Document document = document(); - DocmosisDocument docmosisDocument = new DocmosisDocument("order.pdf", pdf); - - given(docmosisDocumentGeneratorService.generateDocmosisDocument(any(), any())).willReturn(docmosisDocument); - given(uploadDocumentService.uploadPDF(userId, userAuthToken, pdf, "blank_order_c21.pdf")) - .willReturn(document); - - AboutToStartOrSubmitCallbackResponse callbackResponse = postMidEvent(callbackRequest()); - - CaseData caseData = mapper.convertValue(callbackResponse.getData(), CaseData.class); - - assertThat(caseData.getOrderTypeAndDocument().getDocument()).isEqualTo(DocumentReference.builder() - .binaryUrl(document.links.binary.href) - .filename(document.originalDocumentName) - .url(document.links.self.href) - .build()); - } - @Test void aboutToSubmitShouldAddC21OrderToCaseDataAndRemoveTemporaryCaseDataOrderFields() throws Exception { AboutToStartOrSubmitCallbackResponse callbackResponse = postAboutToSubmitEvent(callbackRequest()); @@ -174,11 +161,11 @@ private GeneratedOrder buildExpectedCareOrder() { } private void aboutToSubmitAssertions(CaseData caseData, GeneratedOrder expectedOrder) { - List> orders = caseData.getOrderCollection(); assertThat(caseData.getOrderTypeAndDocument()).isEqualTo(null); assertThat(caseData.getOrder()).isEqualTo(null); assertThat(caseData.getJudgeAndLegalAdvisor()).isEqualTo(null); + assertThat(caseData.getOrderFurtherDirections()).isEqualTo(null); assertThat(orders.get(0).getValue()).isEqualTo(expectedOrder); } @@ -216,4 +203,115 @@ private Map expectedOrderLocalAuthorityParameters() { .put("localAuthorityOrCafcass", LOCAL_AUTHORITY_NAME) .build(); } + + @Nested + class MidEvent { + private final byte[] pdf = {1, 2, 3, 4, 5}; + private Document document; + + @BeforeEach + void setUp() { + document = document(); + DocmosisDocument docmosisDocument = new DocmosisDocument("order.pdf", pdf); + + given(docmosisDocumentGeneratorService.generateDocmosisDocument(any(), any())).willReturn(docmosisDocument); + given(uploadDocumentService.uploadPDF(any(), any(), any(), any())).willReturn(document); + } + + @Test + void shouldGenerateOrderDocumentWhenOrderTypeIsBlankOrder() { + AboutToStartOrSubmitCallbackResponse callbackResponse = postMidEvent(generateBlankOrderCaseDetails()); + + CaseData caseData = mapper.convertValue(callbackResponse.getData(), CaseData.class); + + verify(uploadDocumentService, times(1)).uploadPDF(userId, userAuthToken, pdf, "blank_order_c21.pdf"); + + assertThat(caseData.getOrderTypeAndDocument().getDocument()).isEqualTo(expectedDocument()); + } + + @Test + void shouldGenerateOrderDocumentWhenOrderTypeIsCareOrderWithFurtherDirections() { + final AboutToStartOrSubmitCallbackResponse callbackResponse = postMidEvent( + generateCareOrderCaseDetailsWithFurtherDirections()); + + verify(docmosisDocumentGeneratorService, times(1)).generateDocmosisDocument(any(), any()); + verify(uploadDocumentService, times(1)).uploadPDF(userId, userAuthToken, pdf, "care_order.pdf"); + + final CaseData caseData = mapper.convertValue(callbackResponse.getData(), CaseData.class); + + assertThat(caseData.getOrderTypeAndDocument().getDocument()).isEqualTo(expectedDocument()); + } + + @Test + void shouldNotGenerateOrderDocumentWhenOrderTypeIsCareOrderWithNoFurtherDirections() { + postMidEvent(generateCareOrderCaseDetailsWithoutFurtherDirections()); + + verify(docmosisDocumentGeneratorService, never()).generateDocmosisDocument(any(), any()); + verify(uploadDocumentService, never()).uploadPDF(any(), any(), any(), any()); + } + + @AfterEach + void resetInvocations() { + reset(docmosisDocumentGeneratorService); + reset(uploadDocumentService); + } + + private CaseDetails generateBlankOrderCaseDetails() { + final CaseData.CaseDataBuilder dataBuilder = CaseData.builder(); + + dataBuilder.order(GeneratedOrder.builder().details("").build()); + dataBuilder.orderTypeAndDocument(OrderTypeAndDocument.builder().type(BLANK_ORDER).build()); + generateDefaultValues(dataBuilder); + + return CaseDetails.builder() + .data(mapper.convertValue(dataBuilder.build(), new TypeReference<>() {})) + .build(); + } + + private CaseDetails generateCareOrderCaseDetailsWithFurtherDirections() { + final CaseData.CaseDataBuilder dataBuilder = generateCommonCareOrderDetails(); + + dataBuilder.orderFurtherDirections(FurtherDirections.builder() + .directionsNeeded("Yes") + .directions("Some directions") + .build()); + + return CaseDetails.builder() + .data(mapper.convertValue(dataBuilder.build(), new TypeReference<>() {})) + .build(); + } + + private CaseDetails generateCareOrderCaseDetailsWithoutFurtherDirections() { + final CaseData.CaseDataBuilder dataBuilder = generateCommonCareOrderDetails(); + + return CaseDetails.builder() + .data(mapper.convertValue(dataBuilder.build(), new TypeReference<>() {})) + .build(); + } + + private CaseData.CaseDataBuilder generateCommonCareOrderDetails() { + final CaseData.CaseDataBuilder builder = CaseData.builder() + .orderTypeAndDocument(OrderTypeAndDocument.builder() + .type(CARE_ORDER) + .build()); + + generateDefaultValues(builder); + + return builder; + } + + private void generateDefaultValues(CaseData.CaseDataBuilder builder) { + builder.caseLocalAuthority(LOCAL_AUTHORITY_CODE); + builder.familyManCaseNumber(FAMILY_MAN_CASE_NUMBER); + builder.judgeAndLegalAdvisor(JudgeAndLegalAdvisor.builder().build()); + } + + private DocumentReference expectedDocument() { + return DocumentReference.builder() + .binaryUrl(document.links.binary.href) + .filename(document.originalDocumentName) + .url(document.links.self.href) + .build(); + } + } } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/GeneratedOrderController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/GeneratedOrderController.java index 3f142aa5fc1..69bb0d24e4a 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/GeneratedOrderController.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/GeneratedOrderController.java @@ -17,7 +17,9 @@ import uk.gov.hmcts.reform.fpl.config.GatewayConfiguration; import uk.gov.hmcts.reform.fpl.events.GeneratedOrderEvent; import uk.gov.hmcts.reform.fpl.model.CaseData; +import uk.gov.hmcts.reform.fpl.model.FurtherDirections; import uk.gov.hmcts.reform.fpl.model.GeneratedOrder; +import uk.gov.hmcts.reform.fpl.model.OrderTypeAndDocument; import uk.gov.hmcts.reform.fpl.model.common.DocmosisDocument; import uk.gov.hmcts.reform.fpl.model.common.Element; import uk.gov.hmcts.reform.fpl.service.DocmosisDocumentGeneratorService; @@ -31,6 +33,7 @@ import java.util.List; import static uk.gov.hmcts.reform.fpl.enums.DocmosisTemplates.ORDER; +import static uk.gov.hmcts.reform.fpl.enums.GeneratedOrderType.BLANK_ORDER; @Slf4j @Api @@ -80,12 +83,17 @@ public AboutToStartOrSubmitCallbackResponse handleMidEvent( @RequestBody CallbackRequest callbackRequest) { CaseDetails caseDetails = callbackRequest.getCaseDetails(); CaseData caseData = mapper.convertValue(caseDetails.getData(), CaseData.class); + OrderTypeAndDocument orderTypeAndDocument = caseData.getOrderTypeAndDocument(); + FurtherDirections orderFurtherDirections = caseData.getOrderFurtherDirections(); - Document document = getDocument(authorization, userId, caseData); + // Only generate a document if a blank order or further directions has been added + if (orderTypeAndDocument.getType() == BLANK_ORDER || orderFurtherDirections != null) { + Document document = getDocument(authorization, userId, caseData); - //Update orderTypeAndDocument with the document so it can be displayed in check-your-answers - caseDetails.getData().put("orderTypeAndDocument", service.buildOrderTypeAndDocument( - caseData.getOrderTypeAndDocument(), document)); + //Update orderTypeAndDocument with the document so it can be displayed in check-your-answers + caseDetails.getData().put("orderTypeAndDocument", service.buildOrderTypeAndDocument( + orderTypeAndDocument, document)); + } return AboutToStartOrSubmitCallbackResponse.builder() .data(caseDetails.getData()) @@ -108,6 +116,7 @@ public AboutToStartOrSubmitCallbackResponse handleAboutToSubmit( caseDetails.getData().remove("orderTypeAndDocument"); caseDetails.getData().remove("order"); caseDetails.getData().remove("judgeAndLegalAdvisor"); + caseDetails.getData().remove("orderFurtherDirections"); return AboutToStartOrSubmitCallbackResponse.builder() .data(caseDetails.getData()) diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/CaseData.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/CaseData.java index d628a96e1eb..c7e759d02b1 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/CaseData.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/CaseData.java @@ -159,6 +159,7 @@ public List> getAllChildren() { private final C2DocumentBundle temporaryC2Document; private final List> c2DocumentBundle; private final OrderTypeAndDocument orderTypeAndDocument; + private final FurtherDirections orderFurtherDirections; private final GeneratedOrder order; private final List> orderCollection; @@ -238,6 +239,11 @@ public Optional findRespondent(int seqNo) { ? empty() : Optional.of(getRespondents1().get(seqNo).getValue()); } + @JsonIgnore + public String getFurtherDirectionsText() { + return Optional.ofNullable(orderFurtherDirections).map(FurtherDirections::getDirections).orElse(""); + } + private final List> confidentialChildren; public List> getConfidentialChildren() { diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/FurtherDirections.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/FurtherDirections.java new file mode 100644 index 00000000000..97e6037acf5 --- /dev/null +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/FurtherDirections.java @@ -0,0 +1,11 @@ +package uk.gov.hmcts.reform.fpl.model; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class FurtherDirections { + private final String directionsNeeded; + private final String directions; +} diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/GeneratedOrder.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/GeneratedOrder.java index fb805a13a34..278cdb25e7d 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/GeneratedOrder.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/GeneratedOrder.java @@ -15,4 +15,5 @@ public class GeneratedOrder { private final DocumentReference document; private final String date; private final JudgeAndLegalAdvisor judgeAndLegalAdvisor; + private final FurtherDirections furtherDirections; } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/GeneratedOrderService.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/GeneratedOrderService.java index 0717941d818..62dc7550713 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/GeneratedOrderService.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/GeneratedOrderService.java @@ -129,6 +129,7 @@ public Map getOrderTemplateData(CaseData caseData) { .put("legalAdvisorName", JudgeAndLegalAdvisorHelper.getLegalAdvisorName( caseData.getJudgeAndLegalAdvisor())) .put("children", getChildrenDetails(caseData)) + .put("furtherDirections", caseData.getFurtherDirectionsText()) .build(); return orderTemplateBuilder.build(); diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/model/CaseDataTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/model/CaseDataTest.java index fec68e82909..367ca4dc674 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/model/CaseDataTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/model/CaseDataTest.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.skyscreamer.jsonassert.JSONAssert; @@ -164,4 +165,33 @@ public void shouldNotFindNonExistingRespondent() { assertThat(caseData.findRespondent(1)).isEqualTo(Optional.empty()); } + + @Nested + class GetFurtherDirectionsText { + private FurtherDirections furtherDirections; + private CaseData caseData; + + @Test + void shouldReturnDirectionTextWhenFurtherDirectionIsPopulated() { + furtherDirections = FurtherDirections.builder().directions("some text").build(); + caseData = CaseData.builder().orderFurtherDirections(furtherDirections).build(); + + assertThat(caseData.getFurtherDirectionsText()).isEqualTo("some text"); + } + + @Test + void shouldReturnEmptyStringWhenFurtherDirectionIsNotPopulated() { + furtherDirections = FurtherDirections.builder().build(); + caseData = CaseData.builder().orderFurtherDirections(furtherDirections).build(); + + assertThat(caseData.getFurtherDirectionsText()).isEmpty(); + } + + @Test + void shouldReturnEmptyStringWhenFurtherDirectionIsNull() { + caseData = CaseData.builder().build(); + + assertThat(caseData.getFurtherDirectionsText()).isEmpty(); + } + } } diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/GeneratedOrderServiceTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/GeneratedOrderServiceTest.java index 83561ba383d..d687228574a 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/GeneratedOrderServiceTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/GeneratedOrderServiceTest.java @@ -14,6 +14,7 @@ import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.model.Child; import uk.gov.hmcts.reform.fpl.model.ChildParty; +import uk.gov.hmcts.reform.fpl.model.FurtherDirections; import uk.gov.hmcts.reform.fpl.model.GeneratedOrder; import uk.gov.hmcts.reform.fpl.model.OrderTypeAndDocument; import uk.gov.hmcts.reform.fpl.model.common.DocumentReference; @@ -261,6 +262,7 @@ private Map createExpectedOrderData(String date, GeneratedOrderT } expectedMap + .put("furtherDirections", "Example Directions") .put("familyManCaseNumber", "123") .put("courtName", "Example Court") .put("todaysDate", date) @@ -288,6 +290,10 @@ private CaseData createPopulatedCaseData(GeneratedOrderType type, LocalDate loca .order(GeneratedOrder.builder() .title("Example Title") .details("Example details") + .build()) + .orderFurtherDirections(FurtherDirections.builder() + .directionsNeeded("Yes") + .directions("Example Directions") .build()); break; case CARE_ORDER: @@ -295,6 +301,10 @@ private CaseData createPopulatedCaseData(GeneratedOrderType type, LocalDate loca .orderTypeAndDocument(OrderTypeAndDocument.builder() .type(CARE_ORDER) .document(DocumentReference.builder().build()) + .build()) + .orderFurtherDirections(FurtherDirections.builder() + .directionsNeeded("Yes") + .directions("Example Directions") .build()); break; default: