From 6974848b9b845b4122160740cfcdcb9485d11f8e Mon Sep 17 00:00:00 2001 From: swalker125 Date: Mon, 30 Dec 2019 16:29:21 +0000 Subject: [PATCH 01/16] feat: add directions to order generation flow (FPLA-1105) --- .../AuthorisationCaseField/court-admin.json | 7 +++++++ .../createOrder-PREPARE_FOR_HEARING.json | 13 ++++++++++++ .../CaseEventToFields/createOrder.json | 13 ++++++++++++ ccd-definition/CaseField.json | 8 ++++++++ .../ComplexTypes/1_furtherDirections.json | 19 ++++++++++++++++++ .../ComplexTypes/GeneratedOrder.json | 8 ++++++++ .../templates/FL-PLW-GOR-ENG-00218.docx | Bin 43478 -> 43827 bytes e2e/pages/events/createOrderEvent.page.js | 10 +++++++++ ...mctsAdministersCaseAfterSubmission_test.js | 4 ++++ .../controllers/GeneratedOrderController.java | 1 + .../gov/hmcts/reform/fpl/model/CaseData.java | 1 + .../reform/fpl/model/FurtherDirections.java | 11 ++++++++++ .../reform/fpl/model/GeneratedOrder.java | 1 + .../fpl/service/GeneratedOrderService.java | 1 + ...osisTemplateDataGenerationServiceTest.java | 2 +- .../service/GeneratedOrderServiceTest.java | 10 +++++++++ .../callback-request.json | 8 ++++++-- 17 files changed, 114 insertions(+), 3 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 a68e8db3b5f..76bc79b9ccd 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/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json b/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json index dc283ddc408..a572da21d4d 100644 --- a/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json +++ b/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json @@ -37,6 +37,19 @@ "PageLabel": " ", "PageDisplayOrder": 3, "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y" + }, + { + "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", "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..82f94f25e43 100644 --- a/ccd-definition/CaseEventToFields/createOrder.json +++ b/ccd-definition/CaseEventToFields/createOrder.json @@ -37,6 +37,19 @@ "PageLabel": " ", "PageDisplayOrder": 3, "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "createOrder", + "CaseFieldID": "orderFurtherDirections", + "PageFieldDisplayOrder": 1, + "DisplayContext": "OPTIONAL", + "PageID": "FurtherDirections", + "PageLabel": " ", + "PageDisplayOrder": 4, + "PageColumnNumber": 1, "ShowSummaryChangeOption": "Y", "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 2453461135b..39797ed9a23 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..d63230fc24a66b3b28fadcdd8b1968c6b8d864ab 100644 GIT binary patch delta 8769 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 ByC?tv delta 8410 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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..e54e839f216 100644 --- a/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js +++ b/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js @@ -144,6 +144,8 @@ Scenario('HMCTS admin creates multiple orders for the case', async (I, caseViewP await createOrderEventPage.enterC21OrderDetails(); await I.retryUntilExists(() => I.click('Continue'), '#judgeAndLegalAdvisor_judgeTitle'); await createOrderEventPage.enterJudgeAndLegalAdvisor(orders[0].judgeAndLegalAdvisor.judgeLastName, orders[0].judgeAndLegalAdvisor.legalAdvisorName); + await I.retryUntilExists(() => I.click('Continue'), '#orderFurtherDirections_directionsNeeded'); + await createOrderEventPage.enterDirections('example directions'); await I.completeEvent('Save and continue'); let orderTime = new Date(); @@ -161,6 +163,8 @@ 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); 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..9c373c4d6ac 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 @@ -108,6 +108,7 @@ public AboutToStartOrSubmitCallbackResponse handleAboutToSubmit( caseDetails.getData().remove("orderTypeAndDocument"); caseDetails.getData().remove("order"); caseDetails.getData().remove("judgeAndLegalAdvisor"); + caseDetails.getData().remove("furtherDirections"); 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 b006d27b2ec..4bdc14cf249 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 @@ -147,6 +147,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; 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..dcdefaad9bc 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", defaultIfNull(caseData.getOrderFurtherDirections().getDirections(), "")) .build(); return orderTemplateBuilder.build(); diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/CMODocmosisTemplateDataGenerationServiceTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/CMODocmosisTemplateDataGenerationServiceTest.java index 0949d3dfe4d..709437d336c 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/CMODocmosisTemplateDataGenerationServiceTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/CMODocmosisTemplateDataGenerationServiceTest.java @@ -145,7 +145,7 @@ void shouldReturnFullyPopulatedMapWhenCompleteCaseDetailsAreProvided() throws IO assertThat(templateData.get("hearingDate")).isEqualTo(""); assertThat(templateData.get("hearingVenue")).isEqualTo(HEARING_VENUE); assertThat(templateData.get("preHearingAttendance")).isEqualTo( - dateFormatterService.formatLocalDateTimeBaseUsingFormat(NOW.minusHours(1), "dd MMMM YYYY, h:mma")); + dateFormatterService.formatLocalDateTimeBaseUsingFormat(NOW.minusHours(1), "dd MMMM yyyy, h:mma")); assertThat(templateData.get("hearingTime")).isEqualTo(getHearingTime()); assertThat(templateData.get("judgeTitleAndName")).isEqualTo("Her Honour Judge Law"); assertThat(templateData.get("legalAdvisorName")).isEqualTo("Peter Parker"); 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: diff --git a/service/src/test/resources/core-case-data-store-api/callback-request.json b/service/src/test/resources/core-case-data-store-api/callback-request.json index a6d475c2210..2f587e11bf5 100644 --- a/service/src/test/resources/core-case-data-store-api/callback-request.json +++ b/service/src/test/resources/core-case-data-store-api/callback-request.json @@ -67,7 +67,7 @@ "childInformation": "Cousin", "litigationIssues": "NO", "genderIdentification": "Unknown", - "representedBy" : [] + "representedBy": [] }, "additionalOthers": [ { @@ -495,7 +495,11 @@ "title": "Example Order", "details": "Example order details here - Lorem ipsum dolor sit amet, consectetur adipiscing elit" }, - "familyManCaseNumber": "12345L" + "familyManCaseNumber": "12345L", + "orderFurtherDirections": { + "directionsNeeded": "Yes", + "directions": "Example directions" + } } }, "case_details_before": { From 12cee1adf2cd097d630501fab3be30b8c2b78d54 Mon Sep 17 00:00:00 2001 From: swalker125 Date: Mon, 30 Dec 2019 16:36:31 +0000 Subject: [PATCH 02/16] added assertion for removing orderFurtherDirections --- .../reform/fpl/controllers/GeneratedOrderControllerTest.java | 2 +- .../hmcts/reform/fpl/controllers/GeneratedOrderController.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 76bbecb2956..41b1e71f3b0 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 @@ -189,11 +189,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); } 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 9c373c4d6ac..1d16253b4d0 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 @@ -108,7 +108,7 @@ public AboutToStartOrSubmitCallbackResponse handleAboutToSubmit( caseDetails.getData().remove("orderTypeAndDocument"); caseDetails.getData().remove("order"); caseDetails.getData().remove("judgeAndLegalAdvisor"); - caseDetails.getData().remove("furtherDirections"); + caseDetails.getData().remove("orderFurtherDirections"); return AboutToStartOrSubmitCallbackResponse.builder() .data(caseDetails.getData()) From c9954c0f09148c5bb4270e58e7c9931dc6c229a7 Mon Sep 17 00:00:00 2001 From: Sam Walker Date: Fri, 3 Jan 2020 13:28:14 +0000 Subject: [PATCH 03/16] judiciary permissions for furtherDirections --- .../AuthorisationCaseField/judiciary.json | 7 +++++++ .../CaseEventToFields/createOrderGatekeeping.json | 13 +++++++++++++ .../judiciaryAdministersCaseAfterSubmission_test.js | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/ccd-definition/AuthorisationCaseField/judiciary.json b/ccd-definition/AuthorisationCaseField/judiciary.json index f22f7ed5038..b6b70f4234b 100644 --- a/ccd-definition/AuthorisationCaseField/judiciary.json +++ b/ccd-definition/AuthorisationCaseField/judiciary.json @@ -229,5 +229,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/createOrderGatekeeping.json b/ccd-definition/CaseEventToFields/createOrderGatekeeping.json index 036d7d50e6b..d5d7b89f0da 100644 --- a/ccd-definition/CaseEventToFields/createOrderGatekeeping.json +++ b/ccd-definition/CaseEventToFields/createOrderGatekeeping.json @@ -37,6 +37,19 @@ "PageLabel": " ", "PageDisplayOrder": 3, "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y" + }, + { + "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", "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" } diff --git a/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js b/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js index 9c0de4d9b82..44e941a9590 100644 --- a/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js +++ b/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js @@ -80,6 +80,8 @@ Scenario('Judiciary creates multiple orders for the case', async (I, caseViewPag await createOrderEventPage.enterC21OrderDetails(); await I.retryUntilExists(() => I.click('Continue'), '#judgeAndLegalAdvisor_judgeTitle'); await createOrderEventPage.enterJudgeAndLegalAdvisor(orders[0].judgeAndLegalAdvisor.judgeLastName, orders[0].judgeAndLegalAdvisor.legalAdvisorName); + await I.retryUntilExists(() => I.click('Continue'), '#orderFurtherDirections_directionsNeeded'); + await createOrderEventPage.enterDirections('example directions'); await I.completeEvent('Save and continue'); let orderTime = new Date(); @@ -97,6 +99,8 @@ 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); From cd869f0e7b2d245de45f27a65ff55e8fedf358a2 Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Mon, 6 Jan 2020 12:52:27 +0000 Subject: [PATCH 04/16] Initial pass of show hide logic --- .../CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json | 4 +++- ccd-definition/CaseEventToFields/createOrder.json | 4 +++- ccd-definition/CaseEventToFields/createOrderGatekeeping.json | 4 +++- .../reform/fpl/controllers/GeneratedOrderController.java | 3 +++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json b/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json index a572da21d4d..7db4062364e 100644 --- a/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json +++ b/ccd-definition/CaseEventToFields/createOrder-PREPARE_FOR_HEARING.json @@ -37,7 +37,8 @@ "PageLabel": " ", "PageDisplayOrder": 3, "PageColumnNumber": 1, - "ShowSummaryChangeOption": "Y" + "ShowSummaryChangeOption": "Y", + "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" }, { "LiveFrom": "01/01/2017", @@ -51,6 +52,7 @@ "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 82f94f25e43..1e5a6440fd2 100644 --- a/ccd-definition/CaseEventToFields/createOrder.json +++ b/ccd-definition/CaseEventToFields/createOrder.json @@ -37,7 +37,8 @@ "PageLabel": " ", "PageDisplayOrder": 3, "PageColumnNumber": 1, - "ShowSummaryChangeOption": "Y" + "ShowSummaryChangeOption": "Y", + "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" }, { "LiveFrom": "01/01/2017", @@ -51,6 +52,7 @@ "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 d5d7b89f0da..599f16e27f6 100644 --- a/ccd-definition/CaseEventToFields/createOrderGatekeeping.json +++ b/ccd-definition/CaseEventToFields/createOrderGatekeeping.json @@ -37,7 +37,8 @@ "PageLabel": " ", "PageDisplayOrder": 3, "PageColumnNumber": 1, - "ShowSummaryChangeOption": "Y" + "ShowSummaryChangeOption": "Y", + "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/create-order/mid-event" }, { "LiveFrom": "01/01/2017", @@ -51,6 +52,7 @@ "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/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 1d16253b4d0..8e9bdac6ea7 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 From 3830790e13c7b3f5920c02f3061b5037670fe135 Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Mon, 6 Jan 2020 12:53:27 +0000 Subject: [PATCH 05/16] Logic to only generate document once --- .../fpl/controllers/GeneratedOrderController.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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 8e9bdac6ea7..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 @@ -83,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()) From 9286c175b06000cf42f7cf3ab85cf8e0a81b5102 Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Mon, 6 Jan 2020 15:56:42 +0000 Subject: [PATCH 06/16] Reset callback-request.json --- .../core-case-data-store-api/callback-request.json | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/service/src/test/resources/core-case-data-store-api/callback-request.json b/service/src/test/resources/core-case-data-store-api/callback-request.json index 2f587e11bf5..a6d475c2210 100644 --- a/service/src/test/resources/core-case-data-store-api/callback-request.json +++ b/service/src/test/resources/core-case-data-store-api/callback-request.json @@ -67,7 +67,7 @@ "childInformation": "Cousin", "litigationIssues": "NO", "genderIdentification": "Unknown", - "representedBy": [] + "representedBy" : [] }, "additionalOthers": [ { @@ -495,11 +495,7 @@ "title": "Example Order", "details": "Example order details here - Lorem ipsum dolor sit amet, consectetur adipiscing elit" }, - "familyManCaseNumber": "12345L", - "orderFurtherDirections": { - "directionsNeeded": "Yes", - "directions": "Example directions" - } + "familyManCaseNumber": "12345L" } }, "case_details_before": { From bb47ea65a91d3136c674c32797cb50a23141a57a Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Mon, 6 Jan 2020 15:58:06 +0000 Subject: [PATCH 07/16] Updated template, moved furtherDirections output to be within the conditional statement that tests it --- .../templates/FL-PLW-GOR-ENG-00218.docx | Bin 43827 -> 44458 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docker/docmosis/templates/FL-PLW-GOR-ENG-00218.docx b/docker/docmosis/templates/FL-PLW-GOR-ENG-00218.docx index d63230fc24a66b3b28fadcdd8b1968c6b8d864ab..66eb058a04a9c2019866844d8abef6e97114f03a 100644 GIT binary patch delta 12113 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 delta 11544 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 Wt(N}B{Qm%wXZG9x From c1a515c23b36254607d02c7240bac780a13a89c9 Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Mon, 6 Jan 2020 15:58:31 +0000 Subject: [PATCH 08/16] Update integration tests to fully test the mid event --- .../GeneratedOrderControllerTest.java | 119 ++++++++++++++---- 1 file changed, 93 insertions(+), 26 deletions(-) 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 41b1e71f3b0..2202f9da535 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 @@ -2,7 +2,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; 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.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; @@ -15,8 +19,11 @@ import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; import uk.gov.hmcts.reform.document.domain.Document; +import uk.gov.hmcts.reform.fpl.enums.GeneratedOrderType; 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; @@ -27,6 +34,7 @@ import uk.gov.hmcts.reform.fpl.utils.FixedTimeConfiguration; import uk.gov.service.notify.NotificationClient; +import java.io.IOException; import java.time.LocalDateTime; import java.time.format.FormatStyle; import java.util.List; @@ -36,6 +44,7 @@ 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.times; import static org.mockito.Mockito.verify; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; @@ -84,9 +93,6 @@ class GeneratedOrderControllerTest { @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; - @Test void aboutToStartShouldReturnErrorsWhenFamilymanNumberIsNotProvided() throws Exception { CallbackRequest request = CallbackRequest.builder() @@ -101,27 +107,6 @@ void aboutToStartShouldReturnErrorsWhenFamilymanNumberIsNotProvided() throws Exc 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(USER_ID, AUTH_TOKEN, pdf, "blank_order_c21.pdf")) - .willReturn(document); - - AboutToStartOrSubmitCallbackResponse callbackResponse = makeRequest(callbackRequest(), "mid-event"); - - 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 = makeRequest(callbackRequest(), "about-to-submit"); @@ -204,7 +189,7 @@ private AboutToStartOrSubmitCallbackResponse makeRequest(CallbackRequest request .header("authorization", AUTH_TOKEN) .header("user-id", USER_ID) .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(request))) + .content(mapper.writeValueAsString(request))) .andExpect(status().isOk()) .andReturn(); @@ -219,7 +204,7 @@ private void makeSubmittedRequest(CallbackRequest request) .header("authorization", AUTH_TOKEN) .header("user-id", USER_ID) .contentType(MediaType.APPLICATION_JSON) - .content(objectMapper.writeValueAsString(request))) + .content(mapper.writeValueAsString(request))) .andExpect(status().isOk()) .andReturn(); } @@ -258,4 +243,86 @@ private Map expectedOrderLocalAuthorityParameters() { .put("localAuthorityOrCafcass", LOCAL_AUTHORITY_NAME) .build(); } + + @Nested + class MidEvent { + private Document document; + private final byte[] pdf = {1, 2, 3, 4, 5}; + + @BeforeEach + void setUp() throws IOException { + 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 midEventShouldGenerateOrderDocumentWhenOrderTypeIsBlankOrder() throws Exception { + AboutToStartOrSubmitCallbackResponse callbackResponse = makeRequest( + generateCallbackRequest(BLANK_ORDER, false), "mid-event"); + + CaseData caseData = mapper.convertValue(callbackResponse.getData(), CaseData.class); + + verify(uploadDocumentService, times(1)).uploadPDF(USER_ID, AUTH_TOKEN, pdf, "blank_order_c21.pdf"); + + assertThat(caseData.getOrderTypeAndDocument().getDocument()).isEqualTo(expectedDocument()); + } + + @Test + void midEventShouldGenerateOrderDocumentWhenOrderTypeIsCareOrderWithFurtherDirections() throws Exception { + final AboutToStartOrSubmitCallbackResponse callbackResponse = makeRequest( + generateCallbackRequest(CARE_ORDER, true), "mid-event"); + + verify(docmosisDocumentGeneratorService, times(1)).generateDocmosisDocument(any(), any()); + verify(uploadDocumentService, times(1)).uploadPDF(USER_ID, AUTH_TOKEN, pdf, "care_order.pdf"); + + final CaseData caseData = mapper.convertValue(callbackResponse.getData(), CaseData.class); + + assertThat(caseData.getOrderTypeAndDocument().getDocument()).isEqualTo(expectedDocument()); + } + + @Test + void midEventShouldNotGenerateOrderDocumentWhenOrderTypeIsCareOrderWithNoFurtherDirections() throws Exception { + makeRequest(generateCallbackRequest(CARE_ORDER, false), "mid-event"); + + verify(docmosisDocumentGeneratorService, never()).generateDocmosisDocument(any(), any()); + verify(uploadDocumentService, never()).uploadPDF(any(), any(), any(), any()); + + } + + @AfterEach + void tearDown() { + Mockito.reset(docmosisDocumentGeneratorService); + Mockito.reset(uploadDocumentService); + } + + private CallbackRequest generateCallbackRequest(GeneratedOrderType orderType, boolean withFurtherDirections) + throws IOException { + + CallbackRequest callbackRequest = callbackRequest(); + + callbackRequest.getCaseDetails().getData() + .put("orderTypeAndDocument", OrderTypeAndDocument.builder().type(orderType).build()); + + if (withFurtherDirections) { + callbackRequest.getCaseDetails().getData() + .put("orderFurtherDirections", FurtherDirections.builder() + .directionsNeeded("Yes") + .directions("Some directions") + .build()); + } + + return callbackRequest; + } + + private DocumentReference expectedDocument() { + return DocumentReference.builder() + .binaryUrl(document.links.binary.href) + .filename(document.originalDocumentName) + .url(document.links.self.href) + .build(); + } + } } From 20c36efc07c61266a045ca8cb3de3fd9cf0a19f3 Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Mon, 6 Jan 2020 16:05:03 +0000 Subject: [PATCH 09/16] Fix NPE when caseData.getOrderFurtherDirections is null --- .../hmcts/reform/fpl/service/GeneratedOrderService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 dcdefaad9bc..3eb6de03b33 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 @@ -8,6 +8,7 @@ import uk.gov.hmcts.reform.fpl.config.LocalAuthorityNameLookupConfiguration; import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.model.Child; +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; @@ -20,6 +21,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import static com.google.common.collect.Iterables.getLast; import static java.util.UUID.randomUUID; @@ -129,12 +131,16 @@ public Map getOrderTemplateData(CaseData caseData) { .put("legalAdvisorName", JudgeAndLegalAdvisorHelper.getLegalAdvisorName( caseData.getJudgeAndLegalAdvisor())) .put("children", getChildrenDetails(caseData)) - .put("furtherDirections", defaultIfNull(caseData.getOrderFurtherDirections().getDirections(), "")) + .put("furtherDirections", getFurtherDirections(caseData.getOrderFurtherDirections())) .build(); return orderTemplateBuilder.build(); } + private String getFurtherDirections(FurtherDirections furtherDirections) { + return Optional.ofNullable(furtherDirections).map(FurtherDirections::getDirections).orElse(""); + } + public String generateOrderDocumentFileName(String type) { return type.toLowerCase().replaceAll("[()]", "").replaceAll("[ ]", "_") + ".pdf"; } From cf7415d642778fabf7b20a2371c40f0fac4c7321 Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Mon, 6 Jan 2020 16:44:00 +0000 Subject: [PATCH 10/16] Updated e2e tests to reflect show conditions based on orders --- e2e/tests/hmctsAdministersCaseAfterSubmission_test.js | 3 +-- e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js b/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js index e54e839f216..59dff73170c 100644 --- a/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js +++ b/e2e/tests/hmctsAdministersCaseAfterSubmission_test.js @@ -144,8 +144,6 @@ Scenario('HMCTS admin creates multiple orders for the case', async (I, caseViewP await createOrderEventPage.enterC21OrderDetails(); await I.retryUntilExists(() => I.click('Continue'), '#judgeAndLegalAdvisor_judgeTitle'); await createOrderEventPage.enterJudgeAndLegalAdvisor(orders[0].judgeAndLegalAdvisor.judgeLastName, orders[0].judgeAndLegalAdvisor.legalAdvisorName); - await I.retryUntilExists(() => I.click('Continue'), '#orderFurtherDirections_directionsNeeded'); - await createOrderEventPage.enterDirections('example directions'); await I.completeEvent('Save and continue'); let orderTime = new Date(); @@ -167,6 +165,7 @@ Scenario('HMCTS admin creates multiple orders for the case', async (I, caseViewP 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 44e941a9590..9fa4137de4d 100644 --- a/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js +++ b/e2e/tests/judiciaryAdministersCaseAfterSubmission_test.js @@ -80,8 +80,6 @@ Scenario('Judiciary creates multiple orders for the case', async (I, caseViewPag await createOrderEventPage.enterC21OrderDetails(); await I.retryUntilExists(() => I.click('Continue'), '#judgeAndLegalAdvisor_judgeTitle'); await createOrderEventPage.enterJudgeAndLegalAdvisor(orders[0].judgeAndLegalAdvisor.judgeLastName, orders[0].judgeAndLegalAdvisor.legalAdvisorName); - await I.retryUntilExists(() => I.click('Continue'), '#orderFurtherDirections_directionsNeeded'); - await createOrderEventPage.enterDirections('example directions'); await I.completeEvent('Save and continue'); let orderTime = new Date(); @@ -103,6 +101,7 @@ Scenario('Judiciary creates multiple orders for the case', async (I, caseViewPag 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); From f2e76e8331d530bb14833bfec4d0031f77a97f35 Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Mon, 6 Jan 2020 16:53:29 +0000 Subject: [PATCH 11/16] Test clean up --- .../fpl/controllers/GeneratedOrderControllerTest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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 2202f9da535..0b8a65c2e0f 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 @@ -6,7 +6,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; @@ -45,6 +44,7 @@ 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 org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; @@ -289,13 +289,12 @@ void midEventShouldNotGenerateOrderDocumentWhenOrderTypeIsCareOrderWithNoFurther verify(docmosisDocumentGeneratorService, never()).generateDocmosisDocument(any(), any()); verify(uploadDocumentService, never()).uploadPDF(any(), any(), any(), any()); - } @AfterEach void tearDown() { - Mockito.reset(docmosisDocumentGeneratorService); - Mockito.reset(uploadDocumentService); + reset(docmosisDocumentGeneratorService); + reset(uploadDocumentService); } private CallbackRequest generateCallbackRequest(GeneratedOrderType orderType, boolean withFurtherDirections) From ef27d733657e6d923973da1b8dee7166fb387049 Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Mon, 6 Jan 2020 17:07:29 +0000 Subject: [PATCH 12/16] Removed exception that isn't thrown --- .../reform/fpl/controllers/GeneratedOrderControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ee85f8d08b4..3e10ac56dee 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 @@ -211,7 +211,7 @@ class MidEvent { private final byte[] pdf = {1, 2, 3, 4, 5}; @BeforeEach - void setUp() throws IOException { + void setUp() { document = document(); DocmosisDocument docmosisDocument = new DocmosisDocument("order.pdf", pdf); From 758d184b294041b5e3be7d4f529549fe6bce1f6e Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Tue, 7 Jan 2020 13:46:40 +0000 Subject: [PATCH 13/16] Updated template to ensure that warning block always appears at the bottom of the last page --- .../templates/FL-PLW-GOR-ENG-00218.docx | Bin 44458 -> 40408 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docker/docmosis/templates/FL-PLW-GOR-ENG-00218.docx b/docker/docmosis/templates/FL-PLW-GOR-ENG-00218.docx index 66eb058a04a9c2019866844d8abef6e97114f03a..2fe1b3e7e432f61cf81a080354b421842364fd77 100644 GIT binary patch delta 9959 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

0&0Nr%X-`B)~f#|C`G$Jmgn)>JPyKW6Pf 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 bUMFK Date: Tue, 7 Jan 2020 16:25:02 +0000 Subject: [PATCH 14/16] Moved GeneratedOrderService.getFurtherDirections to CaseData.getFurtherDirectionsText Updated tests to use case details and not pull from json file. Additional tests for new method --- .../GeneratedOrderControllerTest.java | 59 ++++++++++++------- .../gov/hmcts/reform/fpl/model/CaseData.java | 4 ++ .../fpl/service/GeneratedOrderService.java | 9 +-- .../hmcts/reform/fpl/model/CaseDataTest.java | 31 ++++++++++ 4 files changed, 76 insertions(+), 27 deletions(-) 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 3e10ac56dee..9f6ca31cfcd 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,5 +1,6 @@ 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; @@ -29,7 +30,6 @@ import uk.gov.hmcts.reform.fpl.utils.FixedTimeConfiguration; import uk.gov.service.notify.NotificationClient; -import java.io.IOException; import java.time.LocalDateTime; import java.time.format.FormatStyle; import java.util.List; @@ -207,8 +207,8 @@ private Map expectedOrderLocalAuthorityParameters() { @Nested class MidEvent { - private Document document; private final byte[] pdf = {1, 2, 3, 4, 5}; + private Document document; @BeforeEach void setUp() { @@ -220,9 +220,8 @@ void setUp() { } @Test - void midEventShouldGenerateOrderDocumentWhenOrderTypeIsBlankOrder() throws Exception { - AboutToStartOrSubmitCallbackResponse callbackResponse = postMidEvent( - generateCallbackRequest(BLANK_ORDER, false)); + void midEventShouldGenerateOrderDocumentWhenOrderTypeIsBlankOrder() { + AboutToStartOrSubmitCallbackResponse callbackResponse = postMidEvent(generateBlankOrderCaseDetails()); CaseData caseData = mapper.convertValue(callbackResponse.getData(), CaseData.class); @@ -232,9 +231,9 @@ void midEventShouldGenerateOrderDocumentWhenOrderTypeIsBlankOrder() throws Excep } @Test - void midEventShouldGenerateOrderDocumentWhenOrderTypeIsCareOrderWithFurtherDirections() throws Exception { + void midEventShouldGenerateOrderDocumentWhenOrderTypeIsCareOrderWithFurtherDirections() { final AboutToStartOrSubmitCallbackResponse callbackResponse = postMidEvent( - generateCallbackRequest(CARE_ORDER, true)); + generateCareOrderCaseDetails(true)); verify(docmosisDocumentGeneratorService, times(1)).generateDocmosisDocument(any(), any()); verify(uploadDocumentService, times(1)).uploadPDF(userId, userAuthToken, pdf, "care_order.pdf"); @@ -245,8 +244,8 @@ void midEventShouldGenerateOrderDocumentWhenOrderTypeIsCareOrderWithFurtherDirec } @Test - void midEventShouldNotGenerateOrderDocumentWhenOrderTypeIsCareOrderWithNoFurtherDirections() throws Exception { - postMidEvent(generateCallbackRequest(CARE_ORDER, false)); + void midEventShouldNotGenerateOrderDocumentWhenOrderTypeIsCareOrderWithNoFurtherDirections() { + postMidEvent(generateCareOrderCaseDetails(false)); verify(docmosisDocumentGeneratorService, never()).generateDocmosisDocument(any(), any()); verify(uploadDocumentService, never()).uploadPDF(any(), any(), any(), any()); @@ -258,23 +257,43 @@ void tearDown() { reset(uploadDocumentService); } - private CallbackRequest generateCallbackRequest(GeneratedOrderType orderType, boolean withFurtherDirections) - throws IOException { + private CaseDetails generateBlankOrderCaseDetails() { + final CaseData.CaseDataBuilder dataBuilder = CaseData.builder(); + + dataBuilder.order(GeneratedOrder.builder().build()); + dataBuilder.orderTypeAndDocument(OrderTypeAndDocument.builder().type(BLANK_ORDER).build()); + generateDefaultValues(dataBuilder); + + return CaseDetails.builder() + .data(mapper.convertValue(dataBuilder.build(), new TypeReference<>() {})) + .build(); + } - CallbackRequest callbackRequest = callbackRequest(); + private CaseDetails generateCareOrderCaseDetails(boolean withFurtherDirections) { + final CaseData.CaseDataBuilder dataBuilder = CaseData.builder(); - callbackRequest.getCaseDetails().getData() - .put("orderTypeAndDocument", OrderTypeAndDocument.builder().type(orderType).build()); + dataBuilder.orderTypeAndDocument(OrderTypeAndDocument.builder() + .type(GeneratedOrderType.CARE_ORDER) + .build()); if (withFurtherDirections) { - callbackRequest.getCaseDetails().getData() - .put("orderFurtherDirections", FurtherDirections.builder() - .directionsNeeded("Yes") - .directions("Some directions") - .build()); + dataBuilder.orderFurtherDirections(FurtherDirections.builder() + .directionsNeeded("Yes") + .directions("Some directions") + .build()); } - return callbackRequest; + generateDefaultValues(dataBuilder); + + return CaseDetails.builder() + .data(mapper.convertValue(dataBuilder.build(), new TypeReference<>() {})) + .build(); + } + + 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() { 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 4bdc14cf249..bbdf5dea74b 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 @@ -225,4 +225,8 @@ public Optional findOther(int sequenceNo) { public Optional findRespondent(int seqNo) { return getRespondents1().size() <= seqNo ? empty() : Optional.of(getRespondents1().get(seqNo).getValue()); } + + public String getFurtherDirectionsText() { + return Optional.ofNullable(orderFurtherDirections).map(FurtherDirections::getDirections).orElse(""); + } } 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 3eb6de03b33..449258bbedb 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 @@ -8,7 +8,6 @@ import uk.gov.hmcts.reform.fpl.config.LocalAuthorityNameLookupConfiguration; import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.model.Child; -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; @@ -21,7 +20,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import static com.google.common.collect.Iterables.getLast; import static java.util.UUID.randomUUID; @@ -110,7 +108,7 @@ public Map getOrderTemplateData(CaseData caseData) { .put("orderType", BLANK_ORDER) .put("orderTitle", defaultIfNull(caseData.getOrder().getTitle(), "Order")) .put("childrenAct", "Children Act 1989") - .put("orderDetails", caseData.getOrder().getDetails()); + .put("orderDetails", defaultIfNull(caseData.getOrder().getDetails(), "")); break; case CARE_ORDER: orderTemplateBuilder @@ -131,15 +129,12 @@ public Map getOrderTemplateData(CaseData caseData) { .put("legalAdvisorName", JudgeAndLegalAdvisorHelper.getLegalAdvisorName( caseData.getJudgeAndLegalAdvisor())) .put("children", getChildrenDetails(caseData)) - .put("furtherDirections", getFurtherDirections(caseData.getOrderFurtherDirections())) + .put("furtherDirections", caseData.getFurtherDirectionsText()) .build(); return orderTemplateBuilder.build(); } - private String getFurtherDirections(FurtherDirections furtherDirections) { - return Optional.ofNullable(furtherDirections).map(FurtherDirections::getDirections).orElse(""); - } public String generateOrderDocumentFileName(String type) { return type.toLowerCase().replaceAll("[()]", "").replaceAll("[ ]", "_") + ".pdf"; 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..f2b055e63de 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,34 @@ 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(); + } + } } From a62bed4af21adb3c4f8d0ef113e5ad77af241d13 Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Tue, 7 Jan 2020 18:32:49 +0000 Subject: [PATCH 15/16] Code review comments --- .../GeneratedOrderControllerTest.java | 48 +++++++++++-------- .../fpl/service/GeneratedOrderService.java | 3 +- .../hmcts/reform/fpl/model/CaseDataTest.java | 1 - 3 files changed, 30 insertions(+), 22 deletions(-) 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 9f6ca31cfcd..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 @@ -15,7 +15,6 @@ import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; import uk.gov.hmcts.reform.document.domain.Document; -import uk.gov.hmcts.reform.fpl.enums.GeneratedOrderType; import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.model.FurtherDirections; import uk.gov.hmcts.reform.fpl.model.GeneratedOrder; @@ -220,7 +219,7 @@ void setUp() { } @Test - void midEventShouldGenerateOrderDocumentWhenOrderTypeIsBlankOrder() { + void shouldGenerateOrderDocumentWhenOrderTypeIsBlankOrder() { AboutToStartOrSubmitCallbackResponse callbackResponse = postMidEvent(generateBlankOrderCaseDetails()); CaseData caseData = mapper.convertValue(callbackResponse.getData(), CaseData.class); @@ -231,9 +230,9 @@ void midEventShouldGenerateOrderDocumentWhenOrderTypeIsBlankOrder() { } @Test - void midEventShouldGenerateOrderDocumentWhenOrderTypeIsCareOrderWithFurtherDirections() { + void shouldGenerateOrderDocumentWhenOrderTypeIsCareOrderWithFurtherDirections() { final AboutToStartOrSubmitCallbackResponse callbackResponse = postMidEvent( - generateCareOrderCaseDetails(true)); + generateCareOrderCaseDetailsWithFurtherDirections()); verify(docmosisDocumentGeneratorService, times(1)).generateDocmosisDocument(any(), any()); verify(uploadDocumentService, times(1)).uploadPDF(userId, userAuthToken, pdf, "care_order.pdf"); @@ -244,15 +243,15 @@ void midEventShouldGenerateOrderDocumentWhenOrderTypeIsCareOrderWithFurtherDirec } @Test - void midEventShouldNotGenerateOrderDocumentWhenOrderTypeIsCareOrderWithNoFurtherDirections() { - postMidEvent(generateCareOrderCaseDetails(false)); + void shouldNotGenerateOrderDocumentWhenOrderTypeIsCareOrderWithNoFurtherDirections() { + postMidEvent(generateCareOrderCaseDetailsWithoutFurtherDirections()); verify(docmosisDocumentGeneratorService, never()).generateDocmosisDocument(any(), any()); verify(uploadDocumentService, never()).uploadPDF(any(), any(), any(), any()); } @AfterEach - void tearDown() { + void resetInvocations() { reset(docmosisDocumentGeneratorService); reset(uploadDocumentService); } @@ -260,7 +259,7 @@ void tearDown() { private CaseDetails generateBlankOrderCaseDetails() { final CaseData.CaseDataBuilder dataBuilder = CaseData.builder(); - dataBuilder.order(GeneratedOrder.builder().build()); + dataBuilder.order(GeneratedOrder.builder().details("").build()); dataBuilder.orderTypeAndDocument(OrderTypeAndDocument.builder().type(BLANK_ORDER).build()); generateDefaultValues(dataBuilder); @@ -269,27 +268,38 @@ private CaseDetails generateBlankOrderCaseDetails() { .build(); } - private CaseDetails generateCareOrderCaseDetails(boolean withFurtherDirections) { - final CaseData.CaseDataBuilder dataBuilder = CaseData.builder(); + private CaseDetails generateCareOrderCaseDetailsWithFurtherDirections() { + final CaseData.CaseDataBuilder dataBuilder = generateCommonCareOrderDetails(); - dataBuilder.orderTypeAndDocument(OrderTypeAndDocument.builder() - .type(GeneratedOrderType.CARE_ORDER) + dataBuilder.orderFurtherDirections(FurtherDirections.builder() + .directionsNeeded("Yes") + .directions("Some directions") .build()); - if (withFurtherDirections) { - dataBuilder.orderFurtherDirections(FurtherDirections.builder() - .directionsNeeded("Yes") - .directions("Some directions") - .build()); - } + return CaseDetails.builder() + .data(mapper.convertValue(dataBuilder.build(), new TypeReference<>() {})) + .build(); + } - generateDefaultValues(dataBuilder); + 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); 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 449258bbedb..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 @@ -108,7 +108,7 @@ public Map getOrderTemplateData(CaseData caseData) { .put("orderType", BLANK_ORDER) .put("orderTitle", defaultIfNull(caseData.getOrder().getTitle(), "Order")) .put("childrenAct", "Children Act 1989") - .put("orderDetails", defaultIfNull(caseData.getOrder().getDetails(), "")); + .put("orderDetails", caseData.getOrder().getDetails()); break; case CARE_ORDER: orderTemplateBuilder @@ -135,7 +135,6 @@ public Map getOrderTemplateData(CaseData caseData) { return orderTemplateBuilder.build(); } - public String generateOrderDocumentFileName(String type) { return type.toLowerCase().replaceAll("[()]", "").replaceAll("[ ]", "_") + ".pdf"; } 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 f2b055e63de..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 @@ -168,7 +168,6 @@ public void shouldNotFindNonExistingRespondent() { @Nested class GetFurtherDirectionsText { - private FurtherDirections furtherDirections; private CaseData caseData; From 309f322e2f5173bc3ae169538f1d8e848039226f Mon Sep 17 00:00:00 2001 From: Lewis Birks Date: Wed, 8 Jan 2020 09:19:11 +0000 Subject: [PATCH 16/16] Made further directions mandatory --- ccd-definition/CaseEventToFields/createOrder.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccd-definition/CaseEventToFields/createOrder.json b/ccd-definition/CaseEventToFields/createOrder.json index 1e5a6440fd2..2680db90fbf 100644 --- a/ccd-definition/CaseEventToFields/createOrder.json +++ b/ccd-definition/CaseEventToFields/createOrder.json @@ -46,7 +46,7 @@ "CaseEventID": "createOrder", "CaseFieldID": "orderFurtherDirections", "PageFieldDisplayOrder": 1, - "DisplayContext": "OPTIONAL", + "DisplayContext": "MANDATORY", "PageID": "FurtherDirections", "PageLabel": " ", "PageDisplayOrder": 4,