From 38c43531ca881b349a338a29bd84199508b45a60 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 8 Jan 2025 16:34:34 +0000 Subject: [PATCH 01/47] Merge master into branch + start modifying fields --- .../CareSupervision/eps-managing.json | 7 +++++ .../CareSupervision/la-managing.json | 7 +++++ .../CareSupervision/la-shared.json | 7 +++++ .../CareSupervision/la-solicitor.json | 7 +++++ .../others/changeOtherToRespondent.json | 2 +- .../respondents/amendRespondents.json | 4 +-- .../respondents/enterRespondents.json | 27 ++++++++++++------- .../CareSupervision/enterRespondents.json | 9 ++++--- .../CaseField/CareSupervision/caseField.json | 10 +++++++ .../CareSupervision/2_RespondentParty.json | 20 +++++++++----- .../CareSupervision/3_RespondentNew.json | 2 +- .../CareSupervision/AddressNotKnowType.json | 11 ++++++-- .../FixedLists/CareSupervision/ConfirmPR.json | 9 +++++++ .../reform/fpl/model/RespondentParty.java | 9 ++++++- 14 files changed, 105 insertions(+), 26 deletions(-) create mode 100644 ccd-definition/FixedLists/CareSupervision/ConfirmPR.json diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/eps-managing.json b/ccd-definition/AuthorisationCaseField/CareSupervision/eps-managing.json index 545bc7a9a65..e44116f0eb2 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/eps-managing.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/eps-managing.json @@ -2455,5 +2455,12 @@ "CaseFieldID": "draftOrderUrgency", "UserRole": "[EPSMANAGING]", "CRUD": "CRUD" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "respondentsConfirmPR", + "UserRole": "[EPSMANAGING]", + "CRUD": "CRUD" } ] diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/la-managing.json b/ccd-definition/AuthorisationCaseField/CareSupervision/la-managing.json index fafb9fd8d24..751dce0e058 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/la-managing.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/la-managing.json @@ -2448,5 +2448,12 @@ "CaseFieldID": "draftOrderUrgency", "UserRole": "[LAMANAGING]", "CRUD": "CRUD" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "respondentsConfirmPR", + "UserRole": "[LAMANAGING]", + "CRUD": "CRUD" } ] diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/la-shared.json b/ccd-definition/AuthorisationCaseField/CareSupervision/la-shared.json index 92f87a2ac16..c0c847731d0 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/la-shared.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/la-shared.json @@ -2516,5 +2516,12 @@ "CaseFieldID": "draftOrderUrgency", "UserRole": "[LASHARED]", "CRUD": "CRUD" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "respondentsConfirmPR", + "UserRole": "[LASHARED]", + "CRUD": "CRUD" } ] diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/la-solicitor.json b/ccd-definition/AuthorisationCaseField/CareSupervision/la-solicitor.json index e95b3a536b9..bd65537788b 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/la-solicitor.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/la-solicitor.json @@ -3562,5 +3562,12 @@ "CaseFieldID": "draftOrderUrgency", "UserRole": "[LASOLICITOR]", "CRUD": "CRUD" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "respondentsConfirmPR", + "UserRole": "[LASOLICITOR]", + "CRUD": "CRUD" } ] diff --git a/ccd-definition/CaseEventToComplexTypes/others/changeOtherToRespondent.json b/ccd-definition/CaseEventToComplexTypes/others/changeOtherToRespondent.json index cdb2b719465..6dc0656ec4e 100644 --- a/ccd-definition/CaseEventToComplexTypes/others/changeOtherToRespondent.json +++ b/ccd-definition/CaseEventToComplexTypes/others/changeOtherToRespondent.json @@ -167,7 +167,7 @@ "ListElementCode": "party.relationshipLabel", "FieldDisplayOrder": 12, "DisplayContext": "READONLY", - "FieldShowCondition": "party!=\"SHOW_LABEL\"" + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, { "ID": "ChangeOtherToRespondent", diff --git a/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json b/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json index faacef250d4..6fa89a7f734 100644 --- a/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json +++ b/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json @@ -181,7 +181,7 @@ "ListElementCode": "party.relationshipLabel", "FieldDisplayOrder": 12, "DisplayContext": "READONLY", - "FieldShowCondition": "party!=\"SHOW_LABEL\"" + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, { "LiveFrom": "01/01/2017", @@ -200,7 +200,7 @@ "ListElementCode": "party.proceedingsLabel", "FieldDisplayOrder": 14, "DisplayContext": "READONLY", - "FieldShowCondition": "party!=\"SHOW_LABEL\"" + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, { "LiveFrom": "01/01/2017", diff --git a/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json b/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json index 022437ebe0b..64ceb931427 100644 --- a/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json +++ b/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json @@ -5,9 +5,9 @@ "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.firstName", - "EventElementLabel": "*First name", + "EventElementLabel": "First name", "FieldDisplayOrder": 1, - "DisplayContext": "OPTIONAL" + "DisplayContext": "MANDATORY" }, { "LiveFrom": "01/01/2017", @@ -15,9 +15,9 @@ "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.lastName", - "EventElementLabel": "*Last name", + "EventElementLabel": "Last name", "FieldDisplayOrder": 2, - "DisplayContext": "OPTIONAL" + "DisplayContext": "MANDATORY" }, { "LiveFrom": "01/01/2017", @@ -64,6 +64,15 @@ "FieldDisplayOrder": 7, "DisplayContext": "MANDATORY" }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents", + "CaseEventID": "enterRespondents", + "CaseFieldID": "respondents1", + "ListElementCode": "party.whereaboutsUnknownDetails", + "FieldDisplayOrder": 8, + "DisplayContext": "MANDATORY" + }, { "LiveFrom": "01/01/2017", "ID": "EnterRespondents", @@ -183,7 +192,7 @@ "ListElementCode": "party.relationshipLabel", "FieldDisplayOrder": 12, "DisplayContext": "READONLY", - "FieldShowCondition": "party!=\"SHOW_LABEL\"" + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, { "LiveFrom": "01/01/2017", @@ -191,7 +200,7 @@ "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.relationshipToChild", - "EventElementLabel": "*What is the respondent's relationship to the child or children in this case?", + "EventElementLabel": "Which children does the respondent have parental responsibility for and what is their relationship?", "FieldDisplayOrder": 13, "DisplayContext": "OPTIONAL" }, @@ -203,7 +212,7 @@ "ListElementCode": "party.proceedingsLabel", "FieldDisplayOrder": 14, "DisplayContext": "READONLY", - "FieldShowCondition": "party!=\"SHOW_LABEL\"" + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, { "LiveFrom": "01/01/2017", @@ -237,8 +246,8 @@ "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", "ListElementCode": "legalRepresentation", - "EventElementLabel": "*Do they have legal representation?", - "DisplayContext": "OPTIONAL" + "EventElementLabel": "Do they have legal representation?", + "DisplayContext": "MANDATORY" }, { "LiveFrom": "01/01/2017", diff --git a/ccd-definition/CaseEventToFields/CareSupervision/enterRespondents.json b/ccd-definition/CaseEventToFields/CareSupervision/enterRespondents.json index 7c2f4c59510..8cf8e8251a3 100644 --- a/ccd-definition/CaseEventToFields/CareSupervision/enterRespondents.json +++ b/ccd-definition/CaseEventToFields/CareSupervision/enterRespondents.json @@ -3,13 +3,14 @@ "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", "CaseEventID": "enterRespondents", - "CaseFieldID": "submissionRequiredFieldsInfo", + "CaseFieldID": "respondentsConfirmPR", + "PageFieldDisplayOrder": 1, + "DisplayContext": "MANDATORY", "PageID": 1, "PageDisplayOrder": 1, - "PageFieldDisplayOrder": 1, "PageColumnNumber": 1, - "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/mid-event", - "DisplayContext": "READONLY" + "ShowSummaryChangeOption": "Y", + "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/mid-event" }, { "LiveFrom": "01/01/2017", diff --git a/ccd-definition/CaseField/CareSupervision/caseField.json b/ccd-definition/CaseField/CareSupervision/caseField.json index 2a59e864d0c..2a61f474f79 100644 --- a/ccd-definition/CaseField/CareSupervision/caseField.json +++ b/ccd-definition/CaseField/CareSupervision/caseField.json @@ -2719,5 +2719,15 @@ "FieldType": "Date", "SecurityClassification": "Public", "Searchable": "N" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "ID": "respondentsConfirmPR", + "Label": " ", + "FieldType": "MultiSelectList", + "FieldTypeParameter": "ConfirmPR", + "SecurityClassification": "Public", + "Searchable": "N" } ] diff --git a/ccd-definition/ComplexTypes/CareSupervision/2_RespondentParty.json b/ccd-definition/ComplexTypes/CareSupervision/2_RespondentParty.json index ea92e60b601..429ae0028be 100644 --- a/ccd-definition/ComplexTypes/CareSupervision/2_RespondentParty.json +++ b/ccd-definition/ComplexTypes/CareSupervision/2_RespondentParty.json @@ -49,7 +49,7 @@ "ListElementCode": "gender", "FieldType": "FixedList", "FieldTypeParameter": "GenderList", - "ElementLabel": "Gender", + "ElementLabel": "What is the respondent's gender?", "SecurityClassification": "Public" }, { @@ -76,7 +76,7 @@ "ListElementCode": "addressKnow", "FieldType": "FixedRadioList", "FieldTypeParameter": "IsAddressKnowList", - "ElementLabel": "*Current address known?", + "ElementLabel": "Current address known?", "SecurityClassification": "Public" }, { @@ -107,12 +107,21 @@ "SecurityClassification": "Public", "FieldShowCondition": "addressKnow=\"No\"" }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentParty", + "ListElementCode": "whereaboutsUnknownDetails", + "FieldType": "TextArea", + "ElementLabel": "Give more details", + "SecurityClassification": "Public", + "FieldShowCondition": "addressNotKnowReason=\"Whereabouts unknown\"" + }, { "LiveFrom": "01/01/2017", "ID": "RespondentParty", "ListElementCode": "telephoneNumber", "FieldType": "Telephone", - "ElementLabel": "Telephone", + "ElementLabel": " ", "SecurityClassification": "Public" }, { @@ -129,8 +138,7 @@ "ID": "RespondentParty", "ListElementCode": "relationshipToChild", "FieldType": "TextArea", - "ElementLabel": "What is the respondent's relationship to the child or children in this case?", - "HintText": "Include: the name of the child or children, the respondent's relationship to them and any details if you're not sure this person has parental responsibility", + "ElementLabel": "Which children does the respondent have parental responsibility for and what is their relationship?", "SecurityClassification": "Public" }, { @@ -166,7 +174,7 @@ "ListElementCode": "litigationIssues", "FieldType": "FixedRadioList", "FieldTypeParameter": "LitigationCapacityIssues", - "ElementLabel": "Do you believe this person will have problems with litigation capacity (understanding what's happening in the case)?", + "ElementLabel": "Do you believe this person will have difficulty understanding what's happening with the case?", "SecurityClassification": "Public" }, { diff --git a/ccd-definition/ComplexTypes/CareSupervision/3_RespondentNew.json b/ccd-definition/ComplexTypes/CareSupervision/3_RespondentNew.json index 6072ab667e9..c94033716b2 100644 --- a/ccd-definition/ComplexTypes/CareSupervision/3_RespondentNew.json +++ b/ccd-definition/ComplexTypes/CareSupervision/3_RespondentNew.json @@ -23,7 +23,7 @@ "ID": "RespondentNew", "ListElementCode": "party", "FieldType": "RespondentParty", - "ElementLabel": "Party", + "ElementLabel": " ", "SecurityClassification": "Public" }, { diff --git a/ccd-definition/FixedLists/CareSupervision/AddressNotKnowType.json b/ccd-definition/FixedLists/CareSupervision/AddressNotKnowType.json index 496121db318..f294842029e 100644 --- a/ccd-definition/FixedLists/CareSupervision/AddressNotKnowType.json +++ b/ccd-definition/FixedLists/CareSupervision/AddressNotKnowType.json @@ -1,16 +1,23 @@ [ + { + "LiveFrom": "01/01/2017", + "ID": "AddressNotKnowType", + "ListElementCode": "Whereabouts unknown", + "ListElement": "Whereabouts unknown", + "DisplayOrder": 1 + }, { "LiveFrom": "01/01/2017", "ID": "AddressNotKnowType", "ListElementCode": "No fixed abode", "ListElement": "No fixed abode", - "DisplayOrder": 1 + "DisplayOrder": 2 }, { "LiveFrom": "01/01/2017", "ID": "AddressNotKnowType", "ListElementCode": "Person deceased", "ListElement": "Person deceased", - "DisplayOrder": 2 + "DisplayOrder": 3 } ] diff --git a/ccd-definition/FixedLists/CareSupervision/ConfirmPR.json b/ccd-definition/FixedLists/CareSupervision/ConfirmPR.json new file mode 100644 index 00000000000..56ad6078436 --- /dev/null +++ b/ccd-definition/FixedLists/CareSupervision/ConfirmPR.json @@ -0,0 +1,9 @@ +[ + { + "LiveFrom": "01/01/2017", + "ID": "ConfirmPR", + "ListElementCode": "confirm", + "ListElement": "I confirm that each person added as a respondent has parental responsibility for one or more children in the application. Any person in the case who does not have parental responsibility will be added to 'Other people in the case'.", + "DisplayOrder": 1 + } +] diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentParty.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentParty.java index 810689f29c8..7bcb176b7eb 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentParty.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentParty.java @@ -33,6 +33,8 @@ public final class RespondentParty extends Party { private final String litigationIssuesDetails; private final String addressNotKnowReason; private final IsAddressKnowType addressKnow; + private final YesNo hideAddress; + private final YesNo hideTelephone; @Override @@ -72,7 +74,10 @@ public RespondentParty(String partyId, String contactDetailsHiddenReason, String litigationIssues, String litigationIssuesDetails, - String addressNotKnowReason, IsAddressKnowType addressKnow) { + String addressNotKnowReason, + IsAddressKnowType addressKnow, + YesNo hideAddress, + YesNo hideTelephone) { super(partyId, partyType, firstName, lastName, organisationName, dateOfBirth, address, email, telephoneNumber); this.gender = gender; @@ -85,6 +90,8 @@ public RespondentParty(String partyId, this.litigationIssuesDetails = litigationIssuesDetails; this.addressNotKnowReason = addressNotKnowReason; this.addressKnow = addressKnow; + this.hideAddress = hideAddress; + this.hideTelephone = hideTelephone; } @JsonPOJOBuilder(withPrefix = "") From a9f3be91642a70bf326ded83ac10bfdf310012b5 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Fri, 10 Jan 2025 15:55:10 +0000 Subject: [PATCH 02/47] DFPL-2361: Adjust questions on UI + split confidentiality question in two --- .../respondents/amendRespondents.json | 40 ++++++++--- .../respondents/enterRespondents.json | 40 ++++++++--- .../CareSupervision/2_RespondentParty.json | 23 ++++++- .../fpl/controllers/ChangeFromOtherUtils.java | 4 ++ ...RespondentControllerAboutToSubmitTest.java | 2 + .../fpl/controllers/RespondentController.java | 2 + .../uk/gov/hmcts/reform/fpl/enums/YesNo.java | 4 ++ .../hmcts/reform/fpl/model/Respondent.java | 66 ++++++++++++------- .../reform/fpl/model/RespondentParty.java | 33 ++++++++-- .../reform/fpl/service/RespondentService.java | 4 +- .../gov/hmcts/reform/fpl/enums/YesNoTest.java | 15 +++++ 11 files changed, 180 insertions(+), 53 deletions(-) diff --git a/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json b/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json index 6fa89a7f734..9d200c3f6e8 100644 --- a/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json +++ b/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json @@ -134,8 +134,17 @@ "ID": "AmendRespondents", "CaseEventID": "amendRespondents", "CaseFieldID": "respondents1", - "ListElementCode": "party.telephoneNumber", + "ListElementCode": "party.hideAddress", "FieldDisplayOrder": 9, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents", + "CaseEventID": "amendRespondents", + "CaseFieldID": "respondents1", + "ListElementCode": "party.telephoneNumber", + "FieldDisplayOrder": 10, "DisplayContext": "OPTIONAL" }, { @@ -160,18 +169,29 @@ "ID": "AmendRespondents", "CaseEventID": "amendRespondents", "CaseFieldID": "respondents1", - "ListElementCode": "party.contactDetailsHidden", - "FieldDisplayOrder": 10, + "ListElementCode": "party.hideTelephone", + "FieldDisplayOrder": 11, "DisplayContext": "OPTIONAL" }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents", + "CaseEventID": "amendRespondents", + "CaseFieldID": "respondents1", + "ListElementCode": "party.contactDetailsHidden", + "FieldDisplayOrder": 12, + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, { "LiveFrom": "01/01/2017", "ID": "AmendRespondents", "CaseEventID": "amendRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.contactDetailsHiddenReason", - "FieldDisplayOrder": 11, - "DisplayContext": "OPTIONAL" + "FieldDisplayOrder": 13, + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, { "LiveFrom": "01/01/2017", @@ -179,7 +199,7 @@ "CaseEventID": "amendRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.relationshipLabel", - "FieldDisplayOrder": 12, + "FieldDisplayOrder": 14, "DisplayContext": "READONLY", "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, @@ -189,7 +209,7 @@ "CaseEventID": "amendRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.relationshipToChild", - "FieldDisplayOrder": 13, + "FieldDisplayOrder": 15, "DisplayContext": "OPTIONAL" }, { @@ -198,7 +218,7 @@ "CaseEventID": "amendRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.proceedingsLabel", - "FieldDisplayOrder": 14, + "FieldDisplayOrder": 16, "DisplayContext": "READONLY", "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, @@ -208,7 +228,7 @@ "CaseEventID": "amendRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.litigationIssues", - "FieldDisplayOrder": 15, + "FieldDisplayOrder": 17, "DisplayContext": "OPTIONAL" }, { @@ -217,7 +237,7 @@ "CaseEventID": "amendRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.litigationIssuesDetails", - "FieldDisplayOrder": 16, + "FieldDisplayOrder": 18, "DisplayContext": "OPTIONAL" }, { diff --git a/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json b/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json index 64ceb931427..9513ccde160 100644 --- a/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json +++ b/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json @@ -145,8 +145,17 @@ "ID": "EnterRespondents", "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", - "ListElementCode": "party.telephoneNumber", + "ListElementCode": "party.hideAddress", "FieldDisplayOrder": 9, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents", + "CaseEventID": "enterRespondents", + "CaseFieldID": "respondents1", + "ListElementCode": "party.telephoneNumber", + "FieldDisplayOrder": 10, "DisplayContext": "OPTIONAL" }, { @@ -171,18 +180,29 @@ "ID": "EnterRespondents", "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", - "ListElementCode": "party.contactDetailsHidden", - "FieldDisplayOrder": 10, + "ListElementCode": "party.hideTelephone", + "FieldDisplayOrder": 11, "DisplayContext": "OPTIONAL" }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents", + "CaseEventID": "enterRespondents", + "CaseFieldID": "respondents1", + "ListElementCode": "party.contactDetailsHidden", + "FieldDisplayOrder": 12, + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, { "LiveFrom": "01/01/2017", "ID": "EnterRespondents", "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.contactDetailsHiddenReason", - "FieldDisplayOrder": 11, - "DisplayContext": "OPTIONAL" + "FieldDisplayOrder": 13, + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, { "LiveFrom": "01/01/2017", @@ -190,7 +210,7 @@ "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.relationshipLabel", - "FieldDisplayOrder": 12, + "FieldDisplayOrder": 14, "DisplayContext": "READONLY", "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, @@ -201,7 +221,7 @@ "CaseFieldID": "respondents1", "ListElementCode": "party.relationshipToChild", "EventElementLabel": "Which children does the respondent have parental responsibility for and what is their relationship?", - "FieldDisplayOrder": 13, + "FieldDisplayOrder": 15, "DisplayContext": "OPTIONAL" }, { @@ -210,7 +230,7 @@ "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.proceedingsLabel", - "FieldDisplayOrder": 14, + "FieldDisplayOrder": 16, "DisplayContext": "READONLY", "FieldShowCondition": "party=\"DO_NOT_SHOW\"" }, @@ -220,7 +240,7 @@ "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.litigationIssues", - "FieldDisplayOrder": 15, + "FieldDisplayOrder": 17, "DisplayContext": "OPTIONAL" }, { @@ -229,7 +249,7 @@ "CaseEventID": "enterRespondents", "CaseFieldID": "respondents1", "ListElementCode": "party.litigationIssuesDetails", - "FieldDisplayOrder": 16, + "FieldDisplayOrder": 18, "DisplayContext": "OPTIONAL" }, { diff --git a/ccd-definition/ComplexTypes/CareSupervision/2_RespondentParty.json b/ccd-definition/ComplexTypes/CareSupervision/2_RespondentParty.json index 429ae0028be..9227386fbbc 100644 --- a/ccd-definition/ComplexTypes/CareSupervision/2_RespondentParty.json +++ b/ccd-definition/ComplexTypes/CareSupervision/2_RespondentParty.json @@ -101,9 +101,9 @@ "LiveFrom": "01/01/2017", "ID": "RespondentParty", "ListElementCode": "addressNotKnowReason", - "FieldType": "FixedList", + "FieldType": "FixedRadioList", "FieldTypeParameter": "AddressNotKnowType", - "ElementLabel": "*Reason the address is not known", + "ElementLabel": "Why is this address unknown?", "SecurityClassification": "Public", "FieldShowCondition": "addressKnow=\"No\"" }, @@ -114,7 +114,7 @@ "FieldType": "TextArea", "ElementLabel": "Give more details", "SecurityClassification": "Public", - "FieldShowCondition": "addressNotKnowReason=\"Whereabouts unknown\"" + "FieldShowCondition": "addressKnow=\"No\" AND addressNotKnowReason=\"Whereabouts unknown\"" }, { "LiveFrom": "01/01/2017", @@ -185,5 +185,22 @@ "ElementLabel": "Give details, including assessment outcomes and referrals to health services", "FieldShowCondition": "litigationIssues=\"YES\"", "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentParty", + "ListElementCode": "hideAddress", + "FieldType": "YesOrNo", + "ElementLabel": "Do you need to keep the address confidential?", + "FieldShowCondition": "addressKnow=\"Yes\"", + "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentParty", + "ListElementCode": "hideTelephone", + "FieldType": "YesOrNo", + "ElementLabel": "Do you need to keep the contact number confidential?", + "SecurityClassification": "Public" } ] diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/ChangeFromOtherUtils.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/ChangeFromOtherUtils.java index be8e843800b..8ab1ef72f34 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/ChangeFromOtherUtils.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/ChangeFromOtherUtils.java @@ -160,6 +160,8 @@ public static Respondent prepareExpectedTransformedConfidentialRespondent() { .addressKnow(IsAddressKnowType.YES) .address(buildHiddenAddress("Converting")) .telephoneNumber(Telephone.builder().telephoneNumber("123456789").build()) + .hideTelephone(YesNo.YES.getValue()) + .hideAddress(YesNo.YES.getValue()) .build()) .build(); } @@ -171,6 +173,8 @@ public static Respondent prepareExpectedExistingConfidentialRespondent(int seqNo .addressKnow(IsAddressKnowType.YES) .address(buildHiddenAddress(String.format("existing respondent %s", seqNo))) .telephoneNumber(Telephone.builder().telephoneNumber("777777777").build()) + .hideTelephone(YesNo.YES.getValue()) + .hideAddress(YesNo.YES.getValue()) .build()) .build(); } diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToSubmitTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToSubmitTest.java index 1e89049c507..f44cfac912a 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToSubmitTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToSubmitTest.java @@ -203,6 +203,8 @@ private Element retainConfidentialDetails(Element respon .address(respondent.getValue().getParty().getAddress()) .telephoneNumber(respondent.getValue().getParty().getTelephoneNumber()) .email(respondent.getValue().getParty().getEmail()) + .hideAddress("Yes") + .hideTelephone("Yes") .build()) .build()); } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/RespondentController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/RespondentController.java index 80faee5ee36..f74a9e806fe 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/RespondentController.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/RespondentController.java @@ -243,6 +243,8 @@ private void addTransformedRespondentToRespondents(CaseDetails caseDetails, Case transformedRespondent = transformedRespondent.toBuilder() .party(transformedRespondent.getParty().toBuilder() .contactDetailsHidden(YesNo.YES.getValue()) + .hideAddress(YesNo.YES.getValue()) + .hideTelephone(YesNo.YES.getValue()) .contactDetailsHiddenReason(null) .build()) .build(); diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/enums/YesNo.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/enums/YesNo.java index 92672a1813d..6903b6f0342 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/enums/YesNo.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/enums/YesNo.java @@ -40,4 +40,8 @@ public String getValue(Language language) { return language == Language.WELSH ? welshValue : value; } + public boolean equalsString(String value) { + return this.equals(YesNo.fromString(value)); + } + } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java index b565fbc524a..04635dbd2fc 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java @@ -9,6 +9,8 @@ import lombok.extern.jackson.Jacksonized; import uk.gov.hmcts.reform.fpl.enums.AddressNotKnowReason; import uk.gov.hmcts.reform.fpl.enums.IsAddressKnowType; +import uk.gov.hmcts.reform.fpl.enums.YesNo; +import uk.gov.hmcts.reform.fpl.model.RespondentParty.RespondentPartyBuilder; import uk.gov.hmcts.reform.fpl.model.common.Element; import uk.gov.hmcts.reform.fpl.model.common.Party; import uk.gov.hmcts.reform.fpl.model.interfaces.ConfidentialParty; @@ -58,9 +60,10 @@ public boolean hasAddress() { } public boolean containsConfidentialDetails() { - String hiddenValue = defaultIfNull(party.getContactDetailsHidden(), ""); + String hiddenAddress = defaultIfNull(party.getHideAddress(), YesNo.NO.getValue()); + String hiddenTelephone = defaultIfNull(party.getHideTelephone(), YesNo.NO.getValue()); - return hiddenValue.equalsIgnoreCase("Yes"); + return YesNo.YES.getValue().equals(hiddenAddress) || YesNo.YES.getValue().equals(hiddenTelephone); } @Override @@ -70,30 +73,44 @@ public Party toParty() { @Override public Respondent extractConfidentialDetails() { + RespondentParty.RespondentPartyBuilder partyBuilder = RespondentParty.builder() + .firstName(this.party.getFirstName()) + .lastName(this.party.getLastName()) + .email(this.party.getEmail()) + .hideAddress(this.party.getHideAddress()) + .hideTelephone(this.party.getHideTelephone()); + + if (YesNo.YES.equalsString(this.party.getHideAddress())) { + partyBuilder = partyBuilder.addressKnow(this.party.getAddressKnow()) + .address(this.party.getAddress()); + } + + if (YesNo.YES.equalsString(this.party.getHideTelephone())) { + partyBuilder = partyBuilder.telephoneNumber(this.party.getTelephoneNumber()); + } + return Respondent.builder() - .party(RespondentParty.builder() - .addressKnow(this.party.getAddressKnow()) - .firstName(this.party.getFirstName()) - .lastName(this.party.getLastName()) - .addressKnow(this.party.getAddressKnow()) - .address(this.party.getAddress()) - .telephoneNumber(this.party.getTelephoneNumber()) - .email(this.party.getEmail()) - .build()) + .party(partyBuilder.build()) .build(); } @Override public Respondent addConfidentialDetails(Party party) { - RespondentParty.RespondentPartyBuilder partyBuilder = this.getParty().toBuilder() + RespondentPartyBuilder partyBuilder = this.getParty().toBuilder() .firstName(party.getFirstName()) .lastName(party.getLastName()) - .address(party.getAddress()) - .telephoneNumber(party.getTelephoneNumber()) .email(party.getEmail()); - if (!isEmpty(((RespondentParty) party).getAddressKnow())) { - partyBuilder.addressKnow(((RespondentParty) party).getAddressKnow()); + if (YesNo.YES.equalsString(this.party.getHideAddress())) { + partyBuilder = partyBuilder.address(party.getAddress()); + + if (!isEmpty(((RespondentParty) party).getAddressKnow())) { + partyBuilder = partyBuilder.addressKnow(((RespondentParty) party).getAddressKnow()); + } + } + + if (YesNo.YES.equalsString(this.party.getHideTelephone())) { + partyBuilder = partyBuilder.telephoneNumber(party.getTelephoneNumber()); } return this.toBuilder() @@ -103,13 +120,18 @@ public Respondent addConfidentialDetails(Party party) { @Override public Respondent removeConfidentialDetails() { + RespondentPartyBuilder partyBuilder = this.party.toBuilder(); + if (YesNo.YES.equalsString(this.party.getHideAddress())) { + partyBuilder = partyBuilder.addressKnow(null) + .address(null); + } + + if (YesNo.YES.equalsString(this.party.getHideTelephone())) { + partyBuilder = partyBuilder.telephoneNumber(null); + } + return this.toBuilder() - .party(this.party.toBuilder() - .addressKnow(null) - .address(null) - .telephoneNumber(null) - .email(null) - .build()) + .party(partyBuilder.build()) .build(); } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentParty.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentParty.java index 7bcb176b7eb..14d31069647 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentParty.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentParty.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; import uk.gov.hmcts.reform.fpl.enums.IsAddressKnowType; import uk.gov.hmcts.reform.fpl.enums.PartyType; +import uk.gov.hmcts.reform.fpl.enums.YesNo; import uk.gov.hmcts.reform.fpl.model.common.EmailAddress; import uk.gov.hmcts.reform.fpl.model.common.Party; import uk.gov.hmcts.reform.fpl.model.common.Telephone; @@ -18,6 +19,8 @@ import java.time.LocalDate; +import static org.apache.commons.lang3.ObjectUtils.isNotEmpty; + @Data @EqualsAndHashCode(callSuper = true) @JsonInclude(JsonInclude.Include.NON_NULL) @@ -33,8 +36,8 @@ public final class RespondentParty extends Party { private final String litigationIssuesDetails; private final String addressNotKnowReason; private final IsAddressKnowType addressKnow; - private final YesNo hideAddress; - private final YesNo hideTelephone; + private final String hideAddress; + private final String hideTelephone; @Override @@ -76,8 +79,8 @@ public RespondentParty(String partyId, String litigationIssuesDetails, String addressNotKnowReason, IsAddressKnowType addressKnow, - YesNo hideAddress, - YesNo hideTelephone) { + String hideAddress, + String hideTelephone) { super(partyId, partyType, firstName, lastName, organisationName, dateOfBirth, address, email, telephoneNumber); this.gender = gender; @@ -90,8 +93,11 @@ public RespondentParty(String partyId, this.litigationIssuesDetails = litigationIssuesDetails; this.addressNotKnowReason = addressNotKnowReason; this.addressKnow = addressKnow; - this.hideAddress = hideAddress; - this.hideTelephone = hideTelephone; + // Check value if set, if not check contactDetails hidden (old field), otherwise default to No + this.hideAddress = isNotEmpty(hideAddress) ? hideAddress + : YesNo.from(YesNo.YES.equalsString(contactDetailsHidden)).getValue(); + this.hideTelephone = isNotEmpty(hideTelephone) ? hideTelephone + : YesNo.from(YesNo.YES.equalsString(contactDetailsHidden)).getValue(); } @JsonPOJOBuilder(withPrefix = "") @@ -105,4 +111,19 @@ public IsAddressKnowType getAddressKnow() { return this.address != null && StringUtils.isNotBlank(this.address.getAddressLine1()) ? IsAddressKnowType.YES : null; } + + public String getHideAddress() { + if (isNotEmpty(hideAddress)) { + return hideAddress; + } + return YesNo.from(YesNo.YES.equalsString(contactDetailsHidden)).getValue(); + } + + public String getHideTelephone() { + if (isNotEmpty(hideTelephone)) { + return hideTelephone; + } + return YesNo.from(YesNo.YES.equalsString(contactDetailsHidden)).getValue(); + } + } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java index d341e59f45d..474a6810abf 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java @@ -101,9 +101,9 @@ && isNotEmpty(respondent.getSolicitor().getOrganisation().getOrganisationID())) if (party != null) { RespondentParty.RespondentPartyBuilder partyBuilder = party.toBuilder(); - // Make as confidential if living in a refuge + // Make address confidential if living in a refuge if (LIVE_IN_REFUGE.equals(party.getAddressKnow())) { - partyBuilder = partyBuilder.contactDetailsHidden(YES.getValue()); + partyBuilder = partyBuilder.hideAddress(YES.getValue()); } // Clear address not know reason if address is known diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/enums/YesNoTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/enums/YesNoTest.java index d8b25789fb6..e87653e68b4 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/enums/YesNoTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/enums/YesNoTest.java @@ -1,6 +1,8 @@ package uk.gov.hmcts.reform.fpl.enums; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import static org.assertj.core.api.Assertions.assertThat; import static uk.gov.hmcts.reform.fpl.enums.YesNo.NO; @@ -13,4 +15,17 @@ void shouldConvertBooleanToEnum() { assertThat(YesNo.from(true)).isEqualTo(YES); assertThat(YesNo.from(false)).isEqualTo(NO); } + + @ParameterizedTest + @ValueSource(strings = {"Yes", "YES", "yes"}) + void shouldCompareYesString(String yesString) { + assertThat(YES.equalsString(yesString)).isTrue(); + } + + @ParameterizedTest + @ValueSource(strings = {"No", "NO", "no"}) + void shouldCompareNoString(String noString) { + assertThat(NO.equalsString(noString)).isTrue(); + } + } From d0675eb998b02a6bc1a2fd705b29163faf218f04 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 15 Jan 2025 14:35:16 +0000 Subject: [PATCH 03/47] DFPL-2361: Fix tests, ensure deprecated email field is still maintained if originally confidential --- .../hmcts/reform/fpl/model/Respondent.java | 6 +++-- .../ConfidentialDetailsServiceTest.java | 25 ++++++++++++++++--- .../fpl/service/RespondentServiceTest.java | 4 +-- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java index 04635dbd2fc..a38a17ee760 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java @@ -76,7 +76,7 @@ public Respondent extractConfidentialDetails() { RespondentParty.RespondentPartyBuilder partyBuilder = RespondentParty.builder() .firstName(this.party.getFirstName()) .lastName(this.party.getLastName()) - .email(this.party.getEmail()) + .email(this.party.getEmail()) // legacy behaviour, extract email if present (no longer entered) .hideAddress(this.party.getHideAddress()) .hideTelephone(this.party.getHideTelephone()); @@ -99,7 +99,7 @@ public Respondent addConfidentialDetails(Party party) { RespondentPartyBuilder partyBuilder = this.getParty().toBuilder() .firstName(party.getFirstName()) .lastName(party.getLastName()) - .email(party.getEmail()); + .email(party.getEmail()); // legacy behaviour, always remove/readd email (no longer entered) if (YesNo.YES.equalsString(this.party.getHideAddress())) { partyBuilder = partyBuilder.address(party.getAddress()); @@ -121,6 +121,8 @@ public Respondent addConfidentialDetails(Party party) { @Override public Respondent removeConfidentialDetails() { RespondentPartyBuilder partyBuilder = this.party.toBuilder(); + partyBuilder.email(null); // legacy behaviour, always hide email if present (no longer entered) + if (YesNo.YES.equalsString(this.party.getHideAddress())) { partyBuilder = partyBuilder.addressKnow(null) .address(null); diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/ConfidentialDetailsServiceTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/ConfidentialDetailsServiceTest.java index dbadf430159..82386b3e7a1 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/ConfidentialDetailsServiceTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/ConfidentialDetailsServiceTest.java @@ -275,7 +275,8 @@ void shouldAddToListWhenConfidentialDetailsForRespondent() { List> confidentialRespondents = service.getConfidentialDetails(respondents); - assertThat(confidentialRespondents).containsOnly(respondentWithConfidentialFields(ID, NO_VALUE)); + assertThat(confidentialRespondents) + .containsOnly(respondentWithConfidentialFields(ID, NO_VALUE, CONFIDENTIAL)); } @Test @@ -293,7 +294,8 @@ void shouldOnlyAddConfidentialDetailsToListOnlyWhenAnsweredYesForRespondent() { List> confidentialRespondents = service.getConfidentialDetails(respondents); - assertThat(confidentialRespondents).containsExactly(respondentWithConfidentialFields(ID, NO_VALUE)); + assertThat(confidentialRespondents) + .containsExactly(respondentWithConfidentialFields(ID, NO_VALUE, CONFIDENTIAL)); } @Test @@ -440,7 +442,9 @@ private RespondentParty.RespondentPartyBuilder baseRespondentBuilder(String deta return RespondentParty.builder() .firstName("James") .lastName("Johnson") - .contactDetailsHidden(detailsHidden); + .contactDetailsHidden(detailsHidden) + .hideAddress(detailsHidden) + .hideTelephone(detailsHidden); } private Element respondentWithRemovedConfidentialFields(UUID id) { @@ -478,8 +482,23 @@ private Element respondentWithConfidentialFields(UUID id, String det .build()) .build()); } + + private Element respondentWithConfidentialFields(UUID id, String detailsHidden, + String hideAddressTelephone) { + return element(id, Respondent.builder() + .party(baseRespondentBuilder(detailsHidden) + .email(EmailAddress.builder().email("email@email.com").build()) + .address(Address.builder().addressLine1("Address Line 1").build()) + .telephoneNumber(Telephone.builder().telephoneNumber("01227 831393").build()) + .addressKnow(IsAddressKnowType.LIVE_IN_REFUGE) + .hideTelephone(hideAddressTelephone) + .hideAddress(hideAddressTelephone) + .build()) + .build()); + } } + @Nested class OthersTests { @Test diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/RespondentServiceTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/RespondentServiceTest.java index e2bc8401aff..2170667256f 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/RespondentServiceTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/RespondentServiceTest.java @@ -196,8 +196,8 @@ void shouldSetConfidentWhenLiveInRefugeIsSelected() { .build())); List> updatedRespondents = service.consolidateAndRemoveHiddenFields(respondents); - assertThat(updatedRespondents.get(0).getValue().getParty().getContactDetailsHidden()) - .isEqualTo(YES.getValue()); + assertThat(updatedRespondents.get(0).getValue().getParty()).extracting("hideAddress", "hideTelephone") + .containsExactly(YES.getValue(), NO.getValue()); } @Test From 245860d5f66f6e0e01951622cfd4714d93067227 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Thu, 16 Jan 2025 11:25:46 +0000 Subject: [PATCH 04/47] DFPL-2361: Add convert confidential other (refuge) test --- ...ollerChangeFromOtherAboutToSubmitTest.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerChangeFromOtherAboutToSubmitTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerChangeFromOtherAboutToSubmitTest.java index 13f71e40886..a97e4940660 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerChangeFromOtherAboutToSubmitTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerChangeFromOtherAboutToSubmitTest.java @@ -8,13 +8,18 @@ import org.springframework.context.annotation.Import; import org.springframework.security.test.context.support.WithMockUser; import uk.gov.hmcts.reform.ccd.client.model.AboutToStartOrSubmitCallbackResponse; +import uk.gov.hmcts.reform.fpl.enums.IsAddressKnowType; import uk.gov.hmcts.reform.fpl.enums.UserRole; +import uk.gov.hmcts.reform.fpl.enums.YesNo; +import uk.gov.hmcts.reform.fpl.model.Address; import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.model.Other; import uk.gov.hmcts.reform.fpl.model.Others; import uk.gov.hmcts.reform.fpl.model.Representative; import uk.gov.hmcts.reform.fpl.model.Respondent; +import uk.gov.hmcts.reform.fpl.model.RespondentParty; import uk.gov.hmcts.reform.fpl.model.common.Element; +import uk.gov.hmcts.reform.fpl.model.common.Telephone; import uk.gov.hmcts.reform.fpl.request.RequestData; import uk.gov.hmcts.reform.fpl.service.CaseService; import uk.gov.hmcts.reform.fpl.service.ConfidentialDetailsService; @@ -43,6 +48,7 @@ import static java.util.stream.Collectors.toSet; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; +import static uk.gov.hmcts.reform.fpl.controllers.ChangeFromOtherUtils.buildHiddenAddress; import static uk.gov.hmcts.reform.fpl.controllers.ChangeFromOtherUtils.localAuthorities; import static uk.gov.hmcts.reform.fpl.controllers.ChangeFromOtherUtils.otherToRespondentEventData; import static uk.gov.hmcts.reform.fpl.controllers.ChangeFromOtherUtils.prepareConfidentialOthersFromAllOthers; @@ -531,4 +537,45 @@ void shouldConvertConfidentialOthersWithRepresentativesToRespondent() { } } + @Test + void shouldConvertRefugeOtherToRefugeRespondentAndKeepHidingAddressTelephone() { + Others others = Others.builder() + .firstOther(Other.builder() + .name("Johnny") + .build()) + .build(); + Respondent transformedRespondent = Respondent.builder() + .party(RespondentParty.builder() + .firstName("Johnny") + .telephoneNumber(Telephone.builder().telephoneNumber("123456789").build()) + .address(buildHiddenAddress("Converting")) + .addressKnow(IsAddressKnowType.LIVE_IN_REFUGE) + .contactDetailsHidden(YesNo.YES.getValue()) + .build()) + .legalRepresentation("No") + .build(); + + UUID refugeOtherId = UUID.randomUUID(); + CaseData caseData = CaseData.builder() + .confidentialOthers(List.of(element(refugeOtherId, Other.builder() + .name("Johnny") + .addressKnowV2(IsAddressKnowType.LIVE_IN_REFUGE) + .address(Address.builder().build()) + .build()))) + .others(others) + .otherToRespondentEventData(otherToRespondentEventData(transformedRespondent, others, SELECTED_OTHER)) + .build(); + + AboutToStartOrSubmitCallbackResponse callbackResponse = postAboutToSubmitEvent(caseData); + CaseData responseCaseData = extractCaseData(callbackResponse); + + + assertThat(responseCaseData.getConfidentialRespondents().get(0).getValue().getParty()) + .extracting("hideAddress", "hideTelephone").containsExactly("Yes", "Yes"); + assertThat(responseCaseData.getAllRespondents().get(0).getValue().getParty().getAddress()) + .isNull(); + assertThat(responseCaseData.getAllRespondents().get(0).getValue().getParty().getTelephoneNumber()) + .isNull(); + } + } From 5f25e6097ff4c14864148d6950c681fb2a3ab3b6 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Tue, 21 Jan 2025 14:16:51 +0000 Subject: [PATCH 05/47] DFPL-2361: Fix mandatory field, use hideAddress/hideTelephone in C110a template --- .../others/changeOtherToRespondent.json | 2 +- .../respondents/amendRespondents.json | 2 +- .../respondents/enterRespondents.json | 2 +- .../service/docmosis/CaseSubmissionGenerationService.java | 5 ++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ccd-definition/CaseEventToComplexTypes/others/changeOtherToRespondent.json b/ccd-definition/CaseEventToComplexTypes/others/changeOtherToRespondent.json index 6dc0656ec4e..fc3b29e8b0a 100644 --- a/ccd-definition/CaseEventToComplexTypes/others/changeOtherToRespondent.json +++ b/ccd-definition/CaseEventToComplexTypes/others/changeOtherToRespondent.json @@ -175,7 +175,7 @@ "CaseFieldID": "transformedRespondent", "ListElementCode": "party.relationshipToChild", "FieldDisplayOrder": 13, - "DisplayContext": "OPTIONAL" + "DisplayContext": "MANDATORY" }, { "ID": "ChangeOtherToRespondent", diff --git a/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json b/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json index 9d200c3f6e8..7140b881168 100644 --- a/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json +++ b/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents.json @@ -210,7 +210,7 @@ "CaseFieldID": "respondents1", "ListElementCode": "party.relationshipToChild", "FieldDisplayOrder": 15, - "DisplayContext": "OPTIONAL" + "DisplayContext": "MANDATORY" }, { "LiveFrom": "01/01/2017", diff --git a/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json b/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json index 9513ccde160..958cf59fba5 100644 --- a/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json +++ b/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents.json @@ -222,7 +222,7 @@ "ListElementCode": "party.relationshipToChild", "EventElementLabel": "Which children does the respondent have parental responsibility for and what is their relationship?", "FieldDisplayOrder": 15, - "DisplayContext": "OPTIONAL" + "DisplayContext": "MANDATORY" }, { "LiveFrom": "01/01/2017", diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/docmosis/CaseSubmissionGenerationService.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/docmosis/CaseSubmissionGenerationService.java index 7edcc7abf0d..fd01485eafc 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/docmosis/CaseSubmissionGenerationService.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/docmosis/CaseSubmissionGenerationService.java @@ -738,7 +738,6 @@ private DocmosisChild buildChild(final ChildParty child, private DocmosisRespondent buildRespondent(final RespondentParty respondent, Language applicationLanguage) { - final boolean isConfidential = equalsIgnoreCase(respondent.getContactDetailsHidden(), YES.getValue()); return DocmosisRespondent.builder() .name(respondent.getFullName()) .age(formatAge(respondent.getDateOfBirth(), applicationLanguage)) @@ -747,11 +746,11 @@ private DocmosisRespondent buildRespondent(final RespondentParty respondent, .dateOfBirth(formatDateDisplay(respondent.getDateOfBirth(), applicationLanguage)) .placeOfBirth(getDefaultIfNullOrEmpty(respondent.getPlaceOfBirth())) .address( - isConfidential + YES.equalsString(respondent.getHideAddress()) ? getConfidential(applicationLanguage) : formatAddress(respondent.getAddress())) .telephoneNumber( - isConfidential + YES.equalsString(respondent.getHideTelephone()) ? getConfidential(applicationLanguage) : getDefaultIfNullOrEmpty(getTelephoneNumber(respondent.getTelephoneNumber()))) .contactDetailsHidden(getValidAnswerOrDefaultValue(respondent.getContactDetailsHidden(), From d6e03c07e8eb26bf9a40f82e60b941c2fb1ec212 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Thu, 23 Jan 2025 11:02:46 +0000 Subject: [PATCH 06/47] DFPL-2361: Add permissions for 3rd party standalones --- .../AuthorisationCaseField/CareSupervision/solicitor.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json b/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json index c2171e537a7..c6c03522ab1 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json @@ -19,6 +19,13 @@ ], "CRUD": "R" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "respondentsConfirmPR", + "UserRoles": ["[SOLICITORA]", "[CHILDSOLICITORA]"], + "CRUD": "R" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", From bce95db98eeeb931b49ccf4962f5c8e7bdcd1a2a Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Mon, 27 Jan 2025 10:51:16 +0000 Subject: [PATCH 07/47] DFPL-2361: update perms --- .../CareSupervision/court-admin.json | 7 +++++++ .../CareSupervision/judiciary.json | 9 ++++++++- .../CareSupervision/solicitor.json | 10 ++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json b/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json index f8edda62d6c..414c0edd052 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json @@ -111,6 +111,13 @@ "UserRole": "caseworker-publiclaw-courtadmin", "CRUD": "CRU" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "respondentsConfirmPR", + "UserRole": "caseworker-publiclaw-courtadmin", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/judiciary.json b/ccd-definition/AuthorisationCaseField/CareSupervision/judiciary.json index 49853755fe8..29e97424e85 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/judiciary.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/judiciary.json @@ -13,6 +13,13 @@ "UserRole": "caseworker-publiclaw-judiciary", "CRUD": "CRUD" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "respondentsConfirmPR", + "UserRole": "caseworker-publiclaw-judiciary", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", @@ -5115,7 +5122,7 @@ "CaseFieldID": "LinkedCasesComponentLauncher", "UserRole": "caseworker-publiclaw-judiciary", "CRUD": "CRUD" - }, + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json b/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json index c6c03522ab1..5dbf1b92e32 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json @@ -23,8 +23,14 @@ "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", "CaseFieldID": "respondentsConfirmPR", - "UserRoles": ["[SOLICITORA]", "[CHILDSOLICITORA]"], - "CRUD": "R" + "UserRoles": ["[SOLICITOR]", "[SOLICITORA]", "[SOLICITORB]", "[SOLICITORC]", "[SOLICITORD]", + "[SOLICITORE]", "[SOLICITORF]", "[SOLICITORG]", "[SOLICITORH]", "[SOLICITORI]", "[SOLICITORJ]", + "[CHILDSOLICITORA]", "[CHILDSOLICITORB]", "[CHILDSOLICITORC]", "[CHILDSOLICITORD]", + "[CHILDSOLICITORE]", "[CHILDSOLICITORF]", "[CHILDSOLICITORG]", "[CHILDSOLICITORH]", + "[CHILDSOLICITORI]", "[CHILDSOLICITORJ]", "[CHILDSOLICITORK]", "[CHILDSOLICITORL]", + "[CHILDSOLICITORM]", "[CHILDSOLICITORN]", "[CHILDSOLICITORO]" + ], + "CRUD": "CRUD" }, { "LiveFrom": "01/01/2017", From d4f3eb6e01387a4b133dc23627b25cd6689daddc Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Tue, 4 Feb 2025 14:27:44 +0000 Subject: [PATCH 08/47] DFPL-2360: Add new version of respondents event --- .../AuthorisationCaseEvent.json | 48 +- .../CareSupervision/la-solicitor.json | 7 + .../CareSupervision/solicitor.json | 17 +- .../CareSupervision/system-update.json | 7 + .../CaseEvent/CareSupervision/MultiState.json | 39 ++ .../respondents/amendRespondents3rdParty.json | 604 +++++++++++++++++ .../respondents/enterRespondents3rdParty.json | 621 ++++++++++++++++++ .../amendRespondents3rdParty.json | 52 ++ .../enterRespondents3rdParty.json | 53 ++ .../CaseField/CareSupervision/caseField.json | 9 + .../respondentLocalAuthority.json | 78 +++ .../uk/gov/hmcts/reform/fpl/enums/Event.java | 1 + 12 files changed, 1531 insertions(+), 5 deletions(-) create mode 100644 ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents3rdParty.json create mode 100644 ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents3rdParty.json create mode 100644 ccd-definition/CaseEventToFields/CareSupervision/amendRespondents3rdParty.json create mode 100644 ccd-definition/CaseEventToFields/CareSupervision/enterRespondents3rdParty.json create mode 100644 ccd-definition/ComplexTypes/CareSupervision/1_LocalAuthority/respondentLocalAuthority.json diff --git a/ccd-definition/AuthorisationCaseEvent/CareSupervision/AuthorisationCaseEvent.json b/ccd-definition/AuthorisationCaseEvent/CareSupervision/AuthorisationCaseEvent.json index ff1e4ffcc6c..08251b32a2c 100644 --- a/ccd-definition/AuthorisationCaseEvent/CareSupervision/AuthorisationCaseEvent.json +++ b/ccd-definition/AuthorisationCaseEvent/CareSupervision/AuthorisationCaseEvent.json @@ -520,6 +520,26 @@ } ] }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "enterRespondents3rdParty", + "AccessControl": [ + { + "UserRoles": [ + "[SOLICITORA]", + "[CHILDSOLICITORA]" + ], + "CRUD": "CR" + }, + { + "UserRoles": [ + "caseworker-publiclaw-solicitor" + ], + "CRUD": "R" + } + ] + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", @@ -1241,8 +1261,30 @@ "[LAMANAGING]", "[LASHARED]", "[SOLICITORA]", - "[CHILDSOLICITORA]", - "caseworker-publiclaw-solicitor" + "[CHILDSOLICITORA]" + ], + "CRUD": "CR" + }, + { + "UserRoles": [ + "caseworker-publiclaw-magistrate", + "caseworker-publiclaw-gatekeeper", + "caseworker-publiclaw-judiciary" + ], + "CRUD": "R" + } + ] + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "amendRespondents3rdParty", + "AccessControl": [ + { + "UserRoles": [ + "caseworker-publiclaw-courtadmin", + "[SOLICITORA]", + "[CHILDSOLICITORA]" ], "CRUD": "CR" }, @@ -1760,7 +1802,7 @@ "CRUD": "CRU" } ] - }, + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/la-solicitor.json b/ccd-definition/AuthorisationCaseField/CareSupervision/la-solicitor.json index bd65537788b..fd3c89768f3 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/la-solicitor.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/la-solicitor.json @@ -6,6 +6,13 @@ "UserRole": "[LASOLICITOR]", "CRUD": "R" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "respondentLocalAuthority", + "UserRole": "[LASOLICITOR]", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json b/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json index 5dbf1b92e32..cea0667b7f9 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json @@ -9,7 +9,7 @@ { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", - "CaseFieldID": "componentLauncher", + "CaseFieldID": "respondentLocalAuthority", "UserRoles": ["[SOLICITOR]", "[SOLICITORA]", "[SOLICITORB]", "[SOLICITORC]", "[SOLICITORD]", "[SOLICITORE]", "[SOLICITORF]", "[SOLICITORG]", "[SOLICITORH]", "[SOLICITORI]", "[SOLICITORJ]", "[CHILDSOLICITORA]", "[CHILDSOLICITORB]", "[CHILDSOLICITORC]", "[CHILDSOLICITORD]", @@ -17,7 +17,7 @@ "[CHILDSOLICITORI]", "[CHILDSOLICITORJ]", "[CHILDSOLICITORK]", "[CHILDSOLICITORL]", "[CHILDSOLICITORM]", "[CHILDSOLICITORN]", "[CHILDSOLICITORO]" ], - "CRUD": "R" + "CRUD": "CRUD" }, { "LiveFrom": "01/01/2017", @@ -32,6 +32,19 @@ ], "CRUD": "CRUD" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "componentLauncher", + "UserRoles": ["[SOLICITOR]", "[SOLICITORA]", "[SOLICITORB]", "[SOLICITORC]", "[SOLICITORD]", + "[SOLICITORE]", "[SOLICITORF]", "[SOLICITORG]", "[SOLICITORH]", "[SOLICITORI]", "[SOLICITORJ]", + "[CHILDSOLICITORA]", "[CHILDSOLICITORB]", "[CHILDSOLICITORC]", "[CHILDSOLICITORD]", + "[CHILDSOLICITORE]", "[CHILDSOLICITORF]", "[CHILDSOLICITORG]", "[CHILDSOLICITORH]", + "[CHILDSOLICITORI]", "[CHILDSOLICITORJ]", "[CHILDSOLICITORK]", "[CHILDSOLICITORL]", + "[CHILDSOLICITORM]", "[CHILDSOLICITORN]", "[CHILDSOLICITORO]" + ], + "CRUD": "R" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/system-update.json b/ccd-definition/AuthorisationCaseField/CareSupervision/system-update.json index a518466a9c0..49689578e56 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/system-update.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/system-update.json @@ -6,6 +6,13 @@ "UserRole": "caseworker-publiclaw-systemupdate", "CRUD": "CRUD" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "respondentLocalAuthority", + "UserRole": "caseworker-publiclaw-systemupdate", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/CaseEvent/CareSupervision/MultiState.json b/ccd-definition/CaseEvent/CareSupervision/MultiState.json index a3c19560fa4..10914a73b63 100644 --- a/ccd-definition/CaseEvent/CareSupervision/MultiState.json +++ b/ccd-definition/CaseEvent/CareSupervision/MultiState.json @@ -341,6 +341,25 @@ "CallBackURLAboutToStartEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-start", "CallBackURLAboutToSubmitEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-submit", "CallBackURLSubmittedEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/update-task-list/submitted", + "EventEnablingCondition": "[INJECTED_DATA.HAS_3RD_PARTY] = \"No\"", + "ShowSummary": "Y", + "ShowEventNotes": "N", + "EndButtonLabel": "Save and continue" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "ID": "enterRespondents3rdParty", + "Name": "Respondents' details", + "Description": "Entering the respondents for the case", + "DisplayOrder": 5, + "PreConditionState(s)": "Open;RETURNED", + "PostConditionState": "*", + "SecurityClassification": "Public", + "CallBackURLAboutToStartEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-start", + "CallBackURLAboutToSubmitEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-submit", + "CallBackURLSubmittedEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/update-task-list/submitted", + "EventEnablingCondition": "[INJECTED_DATA.HAS_3RD_PARTY] = \"Yes\"", "ShowSummary": "Y", "ShowEventNotes": "N", "EndButtonLabel": "Save and continue" @@ -664,6 +683,26 @@ "ShowSummary": "Y", "ShowEventNotes": "Y", "EndButtonLabel": "Save and continue", + "EventEnablingCondition": "[INJECTED_DATA.HAS_3RD_PARTY] = \"No\"", + "Comment": "Can be removed when respondent journey toggled on (replace with enterRespondents)" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "ID": "amendRespondents3rdParty", + "Name": "Respondents", + "Description": "Amending the respondents for the case", + "DisplayOrder": 20, + "PreConditionState(s)": "Submitted;GATEKEEPING_LISTING;Gatekeeping;PREPARE_FOR_HEARING;FINAL_HEARING", + "PostConditionState": "*", + "SecurityClassification": "Public", + "CallBackURLAboutToStartEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-start", + "CallBackURLAboutToSubmitEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-submit", + "CallBackURLSubmittedEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/submitted", + "ShowSummary": "Y", + "ShowEventNotes": "Y", + "EndButtonLabel": "Save and continue", + "EventEnablingCondition": "[INJECTED_DATA.HAS_3RD_PARTY] = \"Yes\"", "Comment": "Can be removed when respondent journey toggled on (replace with enterRespondents)" }, { diff --git a/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents3rdParty.json b/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents3rdParty.json new file mode 100644 index 00000000000..98128345370 --- /dev/null +++ b/ccd-definition/CaseEventToComplexTypes/respondents/amendRespondents3rdParty.json @@ -0,0 +1,604 @@ +[ + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.firstName", + "FieldDisplayOrder": 1, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.lastName", + "FieldDisplayOrder": 2, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.dateOfBirth", + "FieldDisplayOrder": 3, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.gender", + "FieldDisplayOrder": 4, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.genderIdentification", + "FieldDisplayOrder": 5, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.addressKnow", + "FieldDisplayOrder": 6, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.addressNotKnowReason", + "FieldDisplayOrder": 7, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.addressAutoConfidentialLabel", + "FieldDisplayOrder": 7, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address", + "FieldDisplayOrder": 8, + "DisplayContext": "MANDATORY" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.AddressLine1", + "DisplayContext": "MANDATORY" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.AddressLine2", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.AddressLine3", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.PostTown", + "DisplayContext": "MANDATORY" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.County", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.PostCode", + "DisplayContext": "MANDATORY" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.Country", + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.hideAddress", + "FieldDisplayOrder": 9, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.telephoneNumber", + "FieldDisplayOrder": 10, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.telephoneNumber.telephoneNumber", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.telephoneNumber.contactDirection", + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.hideTelephone", + "FieldDisplayOrder": 11, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.contactDetailsHidden", + "FieldDisplayOrder": 12, + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.contactDetailsHiddenReason", + "FieldDisplayOrder": 13, + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.relationshipLabel", + "FieldDisplayOrder": 14, + "DisplayContext": "READONLY", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.relationshipToChild", + "FieldDisplayOrder": 15, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.proceedingsLabel", + "FieldDisplayOrder": 16, + "DisplayContext": "READONLY", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.litigationIssues", + "FieldDisplayOrder": 17, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.litigationIssuesDetails", + "FieldDisplayOrder": 18, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "legalRepresentationLabel", + "DisplayContext": "READONLY" + }, { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "legalRepresentation", + "DisplayContext": "OPTIONAL" +}, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.firstName", + "FieldDisplayOrder": 1, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.lastName", + "FieldDisplayOrder": 2, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.email", + "FieldDisplayOrder": 3, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.organisation", + "FieldDisplayOrder": 4, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.organisation.OrganisationName", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation", + "FieldDisplayOrder": 6, + "DisplayContext": "OPTIONAL", + "EventElementLabel": " ", + "FieldShowCondition": "respondents1.solicitor.organisation.OrganisationName=\"\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.signUpRequestHeader", + "DisplayContext": "READONLY", + "FieldShowCondition": "party!=\"SHOW_LABEL\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.signupRequestLabel", + "DisplayContext": "READONLY", + "FieldShowCondition": "party!=\"SHOW_LABEL\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.name", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "EventElementLabel": "Address", + "ListElementCode": "solicitor.unregisteredOrganisation.address", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.AddressLine1", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.AddressLine2", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.AddressLine3", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.PostTown", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.County", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.PostCode", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.Country", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress", + "EventElementLabel": "Add the regional office managing this case", + "FieldDisplayOrder": 10, + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.AddressLine1", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.AddressLine2", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.AddressLine3", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.PostTown", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.County", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.PostCode", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.Country", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "legalCounsellors", + "DisplayContext": "READONLY", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "AmendRespondents3rdParty", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.telephoneNumber.telephoneNumber", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "name", + "EventElementLabel": "Local authority name", + "FieldDisplayOrder": 1, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "email", + "EventElementLabel": "Email address", + "HintText": "This should be the email to receive notifications about the application.", + "FieldDisplayOrder": 2, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "phoneNumber", + "EventElementLabel": "Phone number", + "FieldDisplayOrder": 3, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "representativeFirstName", + "EventElementLabel": "Lawyer first name", + "FieldDisplayOrder": 4, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "representativeLastName", + "EventElementLabel": "Lawyer last name", + "FieldDisplayOrder": 5, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address", + "EventElementLabel": "Local authority address", + "FieldDisplayOrder": 6, + "DisplayContext": "COMPLEX" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.AddressLine1", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.AddressLine2", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.AddressLine3", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.PostTown", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.County", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.PostCode", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.Country", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "usingOtherOrg", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "organisation", + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "organisation.OrganisationName", + "DisplayContext": "MANDATORY" + } +] diff --git a/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents3rdParty.json b/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents3rdParty.json new file mode 100644 index 00000000000..59a8e1fe0c7 --- /dev/null +++ b/ccd-definition/CaseEventToComplexTypes/respondents/enterRespondents3rdParty.json @@ -0,0 +1,621 @@ +[ + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.firstName", + "EventElementLabel": "First name", + "FieldDisplayOrder": 1, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.lastName", + "EventElementLabel": "Last name", + "FieldDisplayOrder": 2, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.dateOfBirth", + "FieldDisplayOrder": 3, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.gender", + "FieldDisplayOrder": 4, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.genderIdentification", + "FieldDisplayOrder": 5, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.addressKnow", + "FieldDisplayOrder": 6, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.addressNotKnowReason", + "FieldDisplayOrder": 7, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.whereaboutsUnknownDetails", + "FieldDisplayOrder": 8, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.addressAutoConfidentialLabel", + "FieldDisplayOrder": 7, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address", + "FieldDisplayOrder": 8, + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.AddressLine1", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.AddressLine2", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.AddressLine3", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.PostTown", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.County", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.PostCode", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.address.Country", + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.hideAddress", + "FieldDisplayOrder": 9, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.telephoneNumber", + "FieldDisplayOrder": 10, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.telephoneNumber.telephoneNumber", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.telephoneNumber.contactDirection", + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.hideTelephone", + "FieldDisplayOrder": 11, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.contactDetailsHidden", + "FieldDisplayOrder": 12, + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.contactDetailsHiddenReason", + "FieldDisplayOrder": 13, + "DisplayContext": "OPTIONAL", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.relationshipLabel", + "FieldDisplayOrder": 14, + "DisplayContext": "READONLY", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.relationshipToChild", + "EventElementLabel": "Which children does the respondent have parental responsibility for and what is their relationship?", + "FieldDisplayOrder": 15, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.proceedingsLabel", + "FieldDisplayOrder": 16, + "DisplayContext": "READONLY", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.litigationIssues", + "FieldDisplayOrder": 17, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "party.litigationIssuesDetails", + "FieldDisplayOrder": 18, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "legalRepresentationLabel", + "DisplayContext": "READONLY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "legalRepresentation", + "EventElementLabel": "Do they have legal representation?", + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.firstName", + "FieldDisplayOrder": 1, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.lastName", + "FieldDisplayOrder": 2, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.email", + "EventElementLabel": "*Email address", + "FieldDisplayOrder": 3, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.organisation", + "FieldDisplayOrder": 4, + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.organisation.OrganisationName", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation", + "FieldDisplayOrder": 6, + "DisplayContext": "OPTIONAL", + "EventElementLabel": " ", + "FieldShowCondition": "respondents1.solicitor.organisation.OrganisationName=\"\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.signUpRequestHeader", + "DisplayContext": "READONLY", + "FieldShowCondition": "party!=\"SHOW_LABEL\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.signupRequestLabel", + "DisplayContext": "READONLY", + "FieldShowCondition": "party!=\"SHOW_LABEL\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.name", + "EventElementLabel": "*Organisation name", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address", + "EventElementLabel": "*Address", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.AddressLine1", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.AddressLine2", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.AddressLine3", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.PostTown", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.County", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.PostCode", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.unregisteredOrganisation.address.Country", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress", + "EventElementLabel": "Add the regional office managing this case", + "FieldDisplayOrder": 10, + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.AddressLine1", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.AddressLine2", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.AddressLine3", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.PostTown", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.County", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.PostCode", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.regionalOfficeAddress.Country", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "legalCounsellors", + "DisplayContext": "READONLY", + "FieldShowCondition": "party=\"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "ListElementCode": "solicitor.telephoneNumber.telephoneNumber", + "EventElementLabel": "*Telephone Number", + "DisplayContext": "OPTIONAL" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "name", + "EventElementLabel": "Local authority name", + "FieldDisplayOrder": 1, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "email", + "EventElementLabel": "Email address", + "HintText": "This should be the email to receive notifications about the application.", + "FieldDisplayOrder": 2, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "phoneNumber", + "EventElementLabel": "Phone number", + "FieldDisplayOrder": 3, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "representativeFirstName", + "EventElementLabel": "Lawyer first name", + "FieldDisplayOrder": 4, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "representativeLastName", + "EventElementLabel": "Lawyer last name", + "FieldDisplayOrder": 5, + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address", + "EventElementLabel": "Local authority address", + "FieldDisplayOrder": 6, + "DisplayContext": "COMPLEX" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.AddressLine1", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.AddressLine2", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.AddressLine3", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.PostTown", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.County", + "DisplayContext": "OPTIONAL" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.PostCode", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "address.Country", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "usingOtherOrg", + "DisplayContext": "MANDATORY" + }, + { + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "organisation", + "DisplayContext": "MANDATORY" + }, + { + "LiveFrom": "01/01/2017", + "ID": "EnterRespondents3rd", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "ListElementCode": "organisation.OrganisationName", + "DisplayContext": "MANDATORY" + } +] diff --git a/ccd-definition/CaseEventToFields/CareSupervision/amendRespondents3rdParty.json b/ccd-definition/CaseEventToFields/CareSupervision/amendRespondents3rdParty.json new file mode 100644 index 00000000000..a0c493e4195 --- /dev/null +++ b/ccd-definition/CaseEventToFields/CareSupervision/amendRespondents3rdParty.json @@ -0,0 +1,52 @@ +[ + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "representativeType", + "PageFieldDisplayOrder": 1, + "DisplayContext": "MANDATORY", + "PageID": 1, + "PageDisplayOrder": 1, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y", + "FieldShowCondition": "respondentsConfirmPR = \"DO_NOT_SHOW\"", + "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/mid-event" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "PageFieldDisplayOrder": 2, + "DisplayContext": "COMPLEX", + "PageID": 1, + "PageDisplayOrder": 1, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondentsConfirmPR", + "PageFieldDisplayOrder": 3, + "DisplayContext": "MANDATORY", + "PageID": 1, + "PageDisplayOrder": 1, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "amendRespondents3rdParty", + "CaseFieldID": "respondents1", + "PageFieldDisplayOrder": 4, + "DisplayContext": "COMPLEX", + "PageID": 1, + "PageDisplayOrder": 1, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y" + } +] diff --git a/ccd-definition/CaseEventToFields/CareSupervision/enterRespondents3rdParty.json b/ccd-definition/CaseEventToFields/CareSupervision/enterRespondents3rdParty.json new file mode 100644 index 00000000000..1cd2356680c --- /dev/null +++ b/ccd-definition/CaseEventToFields/CareSupervision/enterRespondents3rdParty.json @@ -0,0 +1,53 @@ +[ + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "representativeType", + "PageFieldDisplayOrder": 1, + "DisplayContext": "MANDATORY", + "PageID": 1, + "PageDisplayOrder": 1, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y", + "FieldShowCondition": "respondentsConfirmPR = \"DO_NOT_SHOW\"", + "CallBackURLMidEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/mid-event" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentLocalAuthority", + "PageFieldDisplayOrder": 2, + "DisplayContext": "COMPLEX", + "PageID": 1, + "PageDisplayOrder": 1, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondentsConfirmPR", + "PageFieldDisplayOrder": 3, + "DisplayContext": "MANDATORY", + "PageID": 1, + "PageDisplayOrder": 1, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseEventID": "enterRespondents3rdParty", + "CaseFieldID": "respondents1", + "CaseEventFieldLabel": "Details of respondents with parental responsibility", + "PageFieldDisplayOrder": 4, + "DisplayContext": "COMPLEX", + "PageID": 1, + "PageDisplayOrder": 1, + "PageColumnNumber": 1, + "ShowSummaryChangeOption": "Y" + } +] diff --git a/ccd-definition/CaseField/CareSupervision/caseField.json b/ccd-definition/CaseField/CareSupervision/caseField.json index f574076734b..7a5d182a52a 100644 --- a/ccd-definition/CaseField/CareSupervision/caseField.json +++ b/ccd-definition/CaseField/CareSupervision/caseField.json @@ -8,6 +8,15 @@ "SecurityClassification": "Public", "Searchable": "Y" }, + { + "LiveFrom": "01/01/2018", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "ID": "respondentLocalAuthority", + "Label": "Details of local authority in this case", + "FieldType": "RespondentLocalAuthority", + "SecurityClassification": "Public", + "Searchable": "Y" + }, { "LiveFrom": "01/01/2018", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/ComplexTypes/CareSupervision/1_LocalAuthority/respondentLocalAuthority.json b/ccd-definition/ComplexTypes/CareSupervision/1_LocalAuthority/respondentLocalAuthority.json new file mode 100644 index 00000000000..0d0416d4397 --- /dev/null +++ b/ccd-definition/ComplexTypes/CareSupervision/1_LocalAuthority/respondentLocalAuthority.json @@ -0,0 +1,78 @@ +[ + { + "LiveFrom": "01/01/2017", + "ID": "RespondentLocalAuthority", + "ListElementCode": "name", + "FieldType": "Text", + "ElementLabel": "Local authority name", + "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentLocalAuthority", + "ListElementCode": "email", + "FieldType": "Email", + "ElementLabel": "Email address", + "HintText": "This should be the email to receive notifications about the application.", + "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentLocalAuthority", + "ListElementCode": "phoneNumber", + "FieldType": "PhoneUK", + "ElementLabel": "Phone number", + "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentLocalAuthority", + "ListElementCode": "representativeFirstName", + "FieldType": "Text", + "ElementLabel": "Lawyer first name", + "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentLocalAuthority", + "ListElementCode": "representativeLastName", + "FieldType": "Text", + "ElementLabel": "Lawyer last name", + "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentLocalAuthority", + "ListElementCode": "address", + "FieldType": "AddressUK", + "ElementLabel": "Local authority address", + "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentLocalAuthority", + "ListElementCode": "usingOtherOrg", + "FieldType": "YesOrNo", + "ElementLabel": "Is this Local Authority outsourcing their work on this case to a separate organisation?", + "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentLocalAuthority", + "ListElementCode": "organisation", + "FieldType": "Organisation", + "ElementLabel": "Outsourcing organisation", + "SecurityClassification": "Public", + "FieldShowCondition": "usingOtherOrg=\"Yes\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentLocalAuthority", + "ListElementCode": "legalCounsellors", + "FieldType": "Collection", + "FieldTypeParameter": "LegalCounsellor", + "ElementLabel": "Counsel", + "SecurityClassification": "Public", + "FieldShowCondition": "organisation = \"DO_NOT_SHOW\"" + } +] diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/enums/Event.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/enums/Event.java index 9e1b759b247..db5f36fa3b8 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/enums/Event.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/enums/Event.java @@ -18,6 +18,7 @@ public enum Event { LOCAL_AUTHORITY_DETAILS("enterLocalAuthority", "Applicant's details"), CHILDREN("enterChildren", "Child's details"), RESPONDENTS("enterRespondents", "Respondents' details"), + RESPONDENTS_3RD_PARTY("enterRespondents3rdParty", "Respondents' details"), ALLOCATION_PROPOSAL("otherProposal", "Allocation proposal"), OTHER_PROCEEDINGS("otherProceedings", "Other proceedings"), INTERNATIONAL_ELEMENT("enterInternationalElement", "International element"), From b50fab3a2f410676ac161e27948763c229e7e589 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Tue, 4 Feb 2025 15:45:59 +0000 Subject: [PATCH 09/47] DFPL-2360: Add metadata controller, add local authority logic --- ccd-definition/CaseType.json | 3 +- ...Counsellor.json => 0_LegalCounsellor.json} | 0 .../CareSupervision/3_RespondentNew.json | 18 +++ .../controllers/CaseInitiationController.java | 7 ++ .../fpl/controllers/MetadataController.java | 101 ++++++++++++++++ .../fpl/controllers/RespondentController.java | 30 ++++- .../fpl/json/serializer/YesNoSerializer.java | 16 +++ .../gov/hmcts/reform/fpl/model/CaseData.java | 4 + .../hmcts/reform/fpl/model/Respondent.java | 13 +++ .../fpl/model/RespondentLocalAuthority.java | 109 ++++++++++++++++++ .../fpl/service/CaseInitiationService.java | 10 ++ .../reform/fpl/service/RespondentService.java | 30 +++++ .../reform/fpl/service/TaskListRenderer.java | 6 +- .../reform/fpl/service/TaskListService.java | 11 +- .../RespondentAfterSubmissionValidator.java | 13 ++- .../validators/CaseSubmissionChecker.java | 14 ++- .../fpl/service/validators/EventsChecker.java | 5 + .../service/validators/PropertiesChecker.java | 7 ++ .../Respondents3rdPartyChecker.java | 65 +++++++++++ 19 files changed, 452 insertions(+), 10 deletions(-) rename ccd-definition/ComplexTypes/CareSupervision/{3_LegalCounsellor.json => 0_LegalCounsellor.json} (100%) create mode 100644 service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java create mode 100644 service/src/main/java/uk/gov/hmcts/reform/fpl/json/serializer/YesNoSerializer.java create mode 100644 service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentLocalAuthority.java create mode 100644 service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyChecker.java diff --git a/ccd-definition/CaseType.json b/ccd-definition/CaseType.json index 8817e873d4f..a832c1ee40b 100644 --- a/ccd-definition/CaseType.json +++ b/ccd-definition/CaseType.json @@ -5,7 +5,8 @@ "Name": "Public Law Applications", "Description": "Public Law Applications", "JurisdictionID": "PUBLICLAW", - "SecurityClassification": "Public" + "SecurityClassification": "Public", + "CallbackGetCaseUrl": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/getCase/metadata" }, { "LiveFrom": "01/01/2017", diff --git a/ccd-definition/ComplexTypes/CareSupervision/3_LegalCounsellor.json b/ccd-definition/ComplexTypes/CareSupervision/0_LegalCounsellor.json similarity index 100% rename from ccd-definition/ComplexTypes/CareSupervision/3_LegalCounsellor.json rename to ccd-definition/ComplexTypes/CareSupervision/0_LegalCounsellor.json diff --git a/ccd-definition/ComplexTypes/CareSupervision/3_RespondentNew.json b/ccd-definition/ComplexTypes/CareSupervision/3_RespondentNew.json index c94033716b2..1f22c9395b6 100644 --- a/ccd-definition/ComplexTypes/CareSupervision/3_RespondentNew.json +++ b/ccd-definition/ComplexTypes/CareSupervision/3_RespondentNew.json @@ -70,5 +70,23 @@ "FieldTypeParameter": "LegalCounsellor", "ElementLabel": "Counsel", "SecurityClassification": "Public" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentNew", + "ListElementCode": "usingOtherOrg", + "FieldType": "YesOrNo", + "ElementLabel": "Is this Local Authority outsourcing their work on this case to a separate organisation?", + "SecurityClassification": "Public", + "FieldShowCondition": "legalCounsellors = \"DO_NOT_SHOW\"" + }, + { + "LiveFrom": "01/01/2017", + "ID": "RespondentNew", + "ListElementCode": "isLocalAuthority", + "FieldType": "YesOrNo", + "ElementLabel": "Is this actually a Local Authority?", + "SecurityClassification": "Public", + "FieldShowCondition": "legalCounsellors = \"DO_NOT_SHOW\"" } ] diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/CaseInitiationController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/CaseInitiationController.java index 0e917282a52..84143d5b5ea 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/CaseInitiationController.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/CaseInitiationController.java @@ -13,6 +13,7 @@ import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; import uk.gov.hmcts.reform.ccd.model.CaseLocation; +import uk.gov.hmcts.reform.fpl.enums.RepresentativeType; import uk.gov.hmcts.reform.fpl.enums.YesNo; import uk.gov.hmcts.reform.fpl.events.CaseDataChanged; import uk.gov.hmcts.reform.fpl.model.CaseData; @@ -124,6 +125,12 @@ public AboutToStartOrSubmitCallbackResponse handleAboutToSubmit(@RequestBody Cal caseDetails.putIfNotEmpty(updatedCaseData.getCourtField(), updatedCaseData.getCourt().getCode()); } + if (!RepresentativeType.LOCAL_AUTHORITY.equals(updatedCaseData.getRepresentativeType())) { + // if we're a 3rd party app, prepopulate the respondentLocalAuthority field + caseDetails.putIfNotEmpty("respondentLocalAuthority", + caseInitiationService.getRespondentLocalAuthorityDetails(caseData)); + } + caseDetails.removeAll("outsourcingType", "outsourcingLAs", "sharingWithUsers", "isOutsourcedCase"); return respond(caseDetails); diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java new file mode 100644 index 00000000000..902b915befd --- /dev/null +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java @@ -0,0 +1,101 @@ +package uk.gov.hmcts.reform.fpl.controllers; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; +import uk.gov.hmcts.reform.fpl.handlers.CaseEventHandler; +import uk.gov.hmcts.reform.fpl.model.CaseData; + +import java.util.List; +import java.util.Map; + +import static org.apache.commons.lang3.ObjectUtils.isEmpty; + + +@Slf4j +@RestController +@RequestMapping("/callback/getCase") +@RequiredArgsConstructor(onConstructor_ = {@Autowired}) +public class MetadataController extends CallbackController { + + private final CaseEventHandler caseEventHandler; + + @PostMapping("/metadata") + public Map getMetaData(@RequestBody CallbackRequest request) { + CaseData caseData = getCaseData(request); + + return Map.of("metadataFields", List.of( + CaseViewField.builder() + .id("[INJECTED_DATA.HAS_3RD_PARTY]") + .label("Has a respondent local authority been added to the case?") + .value(isEmpty(caseData.getRespondentLocalAuthority()) ? "No" : "Yes") + .fieldType(FieldType.TEXT) + .build()/*, + CaseViewField.builder() + .id("[INJECTED_DATA__TASK_LIST]") + .label("Task List") + .value(List.of(OPEN, RETURNED).contains(caseData.getState()) + ? caseEventHandler.getUpdates(request.getCaseDetails()).get("taskList") : "") + .fieldType(FieldType.TEXT) + .hidden(false) + .build() */ + )); + } + + @Data + @Builder + @AllArgsConstructor + static class CaseViewField { + private String id; + private String label; + private Object value; + + @JsonProperty("formatted_value") + private Object formattedValue; + + public Object getFormattedValue() { + return value; + } + + @JsonProperty("field_type") + private FieldType fieldType; + @JsonProperty("security_label") + private final String securityLabel = "PUBLIC"; + + private final boolean metadata = true; + @Builder.Default + private boolean hidden = true; + } + + @Data + @Builder + @AllArgsConstructor + static class FieldType { + private final String id; + private final String type; + private final String min = null; + private final String max = null; + + @JsonProperty("regular_expression") + private final String regularExpression = null; + @JsonProperty("fixed_list_items") + private final List fixedListItems = List.of(); + @JsonProperty("complex_fields") + private final List complexFields = List.of(); + @JsonProperty("collection_field_type") + private final FieldType collectionFieldType = null; + + public static FieldType TEXT = new FieldType("Text", "Text"); + } +} + diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/RespondentController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/RespondentController.java index f74a9e806fe..a66e6f7491d 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/RespondentController.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/RespondentController.java @@ -11,6 +11,7 @@ import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; import uk.gov.hmcts.reform.fpl.enums.IsAddressKnowType; +import uk.gov.hmcts.reform.fpl.enums.RepresentativeType; import uk.gov.hmcts.reform.fpl.enums.YesNo; import uk.gov.hmcts.reform.fpl.events.AfterSubmissionCaseDataUpdated; import uk.gov.hmcts.reform.fpl.events.RespondentsUpdated; @@ -18,6 +19,7 @@ import uk.gov.hmcts.reform.fpl.model.Other; import uk.gov.hmcts.reform.fpl.model.Others; import uk.gov.hmcts.reform.fpl.model.Respondent; +import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; import uk.gov.hmcts.reform.fpl.model.common.Element; import uk.gov.hmcts.reform.fpl.model.common.dynamic.DynamicList; import uk.gov.hmcts.reform.fpl.model.event.OtherToRespondentEventData; @@ -40,12 +42,14 @@ import static java.util.Objects.isNull; import static java.util.Objects.nonNull; +import static org.apache.commons.lang3.ObjectUtils.isNotEmpty; import static uk.gov.hmcts.reform.fpl.enums.ConfidentialPartyType.OTHER; import static uk.gov.hmcts.reform.fpl.enums.ConfidentialPartyType.RESPONDENT; import static uk.gov.hmcts.reform.fpl.enums.RepresentativeRole.Type; import static uk.gov.hmcts.reform.fpl.enums.SolicitorRole.Representing; import static uk.gov.hmcts.reform.fpl.enums.State.OPEN; import static uk.gov.hmcts.reform.fpl.model.Respondent.expandCollection; +import static uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority.DUMMY_UUID; import static uk.gov.hmcts.reform.fpl.model.common.Element.newElement; import static uk.gov.hmcts.reform.fpl.utils.CaseDetailsHelper.removeTemporaryFields; import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.element; @@ -77,8 +81,20 @@ public AboutToStartOrSubmitCallbackResponse handleAboutToStart(@RequestBody Call CaseDetails caseDetails = callbackrequest.getCaseDetails(); CaseData caseData = getCaseData(caseDetails); - caseDetails.getData().put(RESPONDENTS_KEY, confidentialDetailsService.prepareCollection( - caseData.getAllRespondents(), caseData.getConfidentialRespondents(), expandCollection())); + List> respondents = confidentialDetailsService.prepareCollection( + caseData.getAllRespondents(), caseData.getConfidentialRespondents(), expandCollection()); + + // if we have a respondent LA, remove from collection and migrate to the other field + if (!RepresentativeType.LOCAL_AUTHORITY.equals(caseData.getRepresentativeType()) + && isNotEmpty(respondents) && respondents.get(0).getId().equals(DUMMY_UUID)) { + Respondent fakeRespondentLA = respondents.get(0).getValue(); + RespondentLocalAuthority respondentLA = RespondentLocalAuthority.fromRespondent(fakeRespondentLA); + caseDetails.getData().put("respondentLocalAuthority", respondentLA); + + respondents.remove(0); + } + + caseDetails.getData().put(RESPONDENTS_KEY, respondents); return respond(caseDetails); } @@ -130,6 +146,16 @@ public AboutToStartOrSubmitCallbackResponse handleAboutToSubmit(@RequestBody Cal CaseData caseData = getCaseData(caseDetails); CaseData caseDataBefore = getCaseDataBefore(callbackRequest); + if (!RepresentativeType.LOCAL_AUTHORITY.equals(caseData.getRepresentativeType()) + && isNotEmpty(caseData.getRespondentLocalAuthority())) { + + try { + respondentService.transformRespondentLocalAuthority(caseDetails, caseData, caseDataBefore); + } catch (IllegalArgumentException ex) { + log.error("Failed to transform respondent local authority on case {}", caseDetails.getId(), ex); + } + } + prepareNewRespondents(caseDetails, caseData, caseDataBefore); return respond(caseDetails); diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/json/serializer/YesNoSerializer.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/json/serializer/YesNoSerializer.java new file mode 100644 index 00000000000..637856ee551 --- /dev/null +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/json/serializer/YesNoSerializer.java @@ -0,0 +1,16 @@ +package uk.gov.hmcts.reform.fpl.json.serializer; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import uk.gov.hmcts.reform.fpl.enums.YesNo; + +import java.io.IOException; + +public class YesNoSerializer extends JsonSerializer { + + @Override + public void serialize(YesNo value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeString(value != null ? value.getValue() : null); + } +} 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 71efeb1038b..b4a88efc96e 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 @@ -329,6 +329,10 @@ public RepresentativeType getRepresentativeType() { return representativeType != null ? representativeType : RepresentativeType.LOCAL_AUTHORITY; } + // This is a clone of the first respondent on the case in new 3rd party standalone apps, used for pre-filling data + // on case creation. + public final RespondentLocalAuthority respondentLocalAuthority; + @JsonIgnore public List> getAllChildren() { return children1 != null ? children1 : new ArrayList<>(); diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java index a38a17ee760..11709bd15a7 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/Respondent.java @@ -2,6 +2,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.Builder; @@ -10,6 +12,8 @@ import uk.gov.hmcts.reform.fpl.enums.AddressNotKnowReason; import uk.gov.hmcts.reform.fpl.enums.IsAddressKnowType; import uk.gov.hmcts.reform.fpl.enums.YesNo; +import uk.gov.hmcts.reform.fpl.json.deserializer.YesNoDeserializer; +import uk.gov.hmcts.reform.fpl.json.serializer.YesNoSerializer; import uk.gov.hmcts.reform.fpl.model.RespondentParty.RespondentPartyBuilder; import uk.gov.hmcts.reform.fpl.model.common.Element; import uk.gov.hmcts.reform.fpl.model.common.Party; @@ -47,6 +51,15 @@ public class Respondent implements Representable, WithSolicitor, ConfidentialPar private RespondentSolicitor solicitor; private List> legalCounsellors; + // Utilised for Respondent Local Authorities ONLY + @JsonSerialize(using = YesNoSerializer.class) + @JsonDeserialize(using = YesNoDeserializer.class) + private YesNo usingOtherOrg; + + @Builder.Default + @JsonDeserialize(using = YesNoDeserializer.class) + private YesNo isLocalAuthority = YesNo.NO; + public void addRepresentative(UUID representativeId) { if (!unwrapElements(representedBy).contains(representativeId)) { this.representedBy.add(element(representativeId)); diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentLocalAuthority.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentLocalAuthority.java new file mode 100644 index 00000000000..58ba012a405 --- /dev/null +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentLocalAuthority.java @@ -0,0 +1,109 @@ +package uk.gov.hmcts.reform.fpl.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import lombok.Builder; +import lombok.Data; +import lombok.extern.jackson.Jacksonized; +import uk.gov.hmcts.reform.ccd.model.Organisation; +import uk.gov.hmcts.reform.fpl.enums.IsAddressKnowType; +import uk.gov.hmcts.reform.fpl.enums.YesNo; +import uk.gov.hmcts.reform.fpl.json.deserializer.YesNoDeserializer; +import uk.gov.hmcts.reform.fpl.json.serializer.YesNoSerializer; +import uk.gov.hmcts.reform.fpl.model.common.Element; +import uk.gov.hmcts.reform.fpl.model.common.Telephone; + +import java.util.List; +import java.util.UUID; + +import static uk.gov.hmcts.reform.fpl.enums.YesNo.NO; +import static uk.gov.hmcts.reform.fpl.enums.YesNo.YES; +import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.element; + +@Data +@Builder(toBuilder = true) +@Jacksonized +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RespondentLocalAuthority { + + public static UUID DUMMY_UUID = UUID.fromString("00000000-0000-0000-0000-000000000000"); + + private final String name; + private final String email; + private final String phoneNumber; + private final String representativeFirstName; + private final String representativeLastName; + private final Address address; + + @JsonSerialize(using = YesNoSerializer.class) + @JsonDeserialize(using = YesNoDeserializer.class) + private final YesNo usingOtherOrg; + + private Organisation organisation; + private List> legalCounsellors; + + public static RespondentLocalAuthority toRespondentLocalAuthority(String name, String email) { + return RespondentLocalAuthority.builder() + .name(name) + .email(email) + .build(); + } + + /** + * Convert the Respondent object to a RespondentLocalAuthority object, so that we can pre-populate the temporary + * questions in the enterRespondents3rdParty journey. + * + * @param respondent the "fake" Respondent LA object, stored in the start of the respondents1 collection, with UUID + * DUMMY_UUID. + * @return a RespondentLocalAuthority object with the data from the Respondent object. + */ + public static RespondentLocalAuthority fromRespondent(Respondent respondent) { + return RespondentLocalAuthority.builder() + .name(respondent.getParty().getFullName()) + .email(respondent.getSolicitor().getEmail()) + .phoneNumber(respondent.getSolicitor().getTelephoneNumber().getTelephoneNumber()) + .representativeFirstName(respondent.getSolicitor().getFirstName()) + .representativeLastName(respondent.getSolicitor().getLastName()) + .address(respondent.getParty().getAddress()) + .usingOtherOrg(respondent.getUsingOtherOrg()) + .organisation(YES.equals(respondent.getUsingOtherOrg()) + ? respondent.getSolicitor().getOrganisation() : null) + .legalCounsellors(respondent.getLegalCounsellors()) + .build(); + } + + /** + * Using a respondent as a base, override data attached to it so we don't lose any original data specific to the + * "Respondent" instance - i.e. colleaguesToNotify. + * + * @param baseRespondent the base respondent object to override + * @return an updated Element consisting of the baseRespondent + any overridden data based on this object. + */ + public Element toRespondent(Respondent baseRespondent) { + return element(DUMMY_UUID, baseRespondent.toBuilder() + .isLocalAuthority(YES) + .legalRepresentation(YES.getValue()) + .party(RespondentParty.builder() + .firstName(name) + .relationshipToChild("Local Authority") + .address(address) + .addressKnow(IsAddressKnowType.YES) + .hideAddress(NO.getValue()) + .hideTelephone(NO.getValue()) + .build()) + .solicitor(RespondentSolicitor.builder() + .organisation(organisation) + .firstName(representativeFirstName) + .lastName(representativeLastName) + .email(email) + .telephoneNumber(Telephone.builder() + .telephoneNumber(phoneNumber) + .build()) + .build()) + .legalCounsellors(legalCounsellors) + .usingOtherOrg(usingOtherOrg) + .build()); + } + +} diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/CaseInitiationService.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/CaseInitiationService.java index 68d9a05bd7b..2c44bcdfefc 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/CaseInitiationService.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/CaseInitiationService.java @@ -6,6 +6,7 @@ import org.springframework.stereotype.Service; import uk.gov.hmcts.reform.ccd.model.OrganisationPolicy; import uk.gov.hmcts.reform.fpl.config.HmctsCourtLookupConfiguration; +import uk.gov.hmcts.reform.fpl.config.LocalAuthorityEmailLookupConfiguration; import uk.gov.hmcts.reform.fpl.enums.CaseRole; import uk.gov.hmcts.reform.fpl.enums.OutsourcingType; import uk.gov.hmcts.reform.fpl.enums.RepresentativeType; @@ -14,6 +15,7 @@ import uk.gov.hmcts.reform.fpl.model.Court; import uk.gov.hmcts.reform.fpl.model.DfjAreaCourtMapping; import uk.gov.hmcts.reform.fpl.model.LocalAuthorityName; +import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; import uk.gov.hmcts.reform.fpl.model.common.dynamic.DynamicList; import uk.gov.hmcts.reform.fpl.request.RequestData; import uk.gov.hmcts.reform.rd.model.Organisation; @@ -52,6 +54,7 @@ public class CaseInitiationService { private final LocalAuthorityService localAuthorities; private final HmctsCourtLookupConfiguration courtLookup; private final DfjAreaLookUpService dfjLookUpService; + private final LocalAuthorityEmailLookupConfiguration localAuthorityEmailLookupConfiguration; public Optional getUserOrganisationId() { return organisationService.findOrganisation().map(Organisation::getOrganisationIdentifier); @@ -253,6 +256,13 @@ public CaseData updateOrganisationsDetails(CaseData caseData) { return caseData; } + public RespondentLocalAuthority getRespondentLocalAuthorityDetails(CaseData caseData) { + return RespondentLocalAuthority.toRespondentLocalAuthority( + localAuthorities.getLocalAuthorityName(caseData.getRelatingLA()), + localAuthorityEmailLookupConfiguration.getSharedInbox(caseData.getRelatingLA()).orElse("") + ); + } + private CaseData addDfjAndCourtDetails(CaseData caseData) { if (isEmpty(caseData.getCaseLocalAuthorityName())) { return caseData.toBuilder().court( diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java index 474a6810abf..cde24d89c25 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java @@ -4,6 +4,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; import uk.gov.hmcts.reform.ccd.model.ChangeOrganisationRequest; import uk.gov.hmcts.reform.ccd.model.Organisation; import uk.gov.hmcts.reform.fpl.enums.IsAddressKnowType; @@ -12,6 +13,7 @@ import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.model.Other; import uk.gov.hmcts.reform.fpl.model.Respondent; +import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; import uk.gov.hmcts.reform.fpl.model.RespondentParty; import uk.gov.hmcts.reform.fpl.model.RespondentSolicitor; import uk.gov.hmcts.reform.fpl.model.common.Element; @@ -42,6 +44,7 @@ import static uk.gov.hmcts.reform.fpl.enums.IsAddressKnowType.LIVE_IN_REFUGE; import static uk.gov.hmcts.reform.fpl.enums.YesNo.NO; import static uk.gov.hmcts.reform.fpl.enums.YesNo.YES; +import static uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority.DUMMY_UUID; import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.element; import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.findElement; import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.unwrapElements; @@ -52,6 +55,8 @@ public class RespondentService { private final Time time; + private final LocalAuthorityService localAuthorityService; + public String buildRespondentLabel(List> respondents) { StringBuilder sb = new StringBuilder(); @@ -294,4 +299,29 @@ public Respondent transformOtherToRespondent(Other other) { .party(respondentParty).build(); } + public void transformRespondentLocalAuthority(CaseDetails caseDetails, CaseData caseData, CaseData caseDataBefore) { + List> respondents = caseData.getRespondents1(); + Element oldFakeRespondentLA = caseDataBefore.getRespondents1().get(0); + + if (!oldFakeRespondentLA.getId().equals(DUMMY_UUID)) { + throw new IllegalArgumentException("This is not a valid Respondent Local Authority"); + } + + RespondentLocalAuthority respondentLA = caseData.getRespondentLocalAuthority(); + + if (NO.equals(respondentLA.getUsingOtherOrg())) { + // using the onboarding organisation + Organisation laOrg = Organisation.builder() + .organisationID(localAuthorityService.getLocalAuthorityId(caseData.getRelatingLA())) + .organisationName(localAuthorityService.getLocalAuthorityName(caseData.getRelatingLA())) + .build(); + respondentLA.setOrganisation(laOrg); + } + // using the old "fake" respondentLA as a base, update data modified on UI + // so we persist data attached to the "Respondent" instance, i.e. colleaguesToNotify, and any new "respondent" + // specific functionality in the future + respondents.add(0, respondentLA.toRespondent(oldFakeRespondentLA.getValue())); + caseDetails.getData().put("respondents1", respondents); + } + } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/TaskListRenderer.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/TaskListRenderer.java index 5c7aecd044e..f3c1f0400ed 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/TaskListRenderer.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/TaskListRenderer.java @@ -39,6 +39,7 @@ import static uk.gov.hmcts.reform.fpl.enums.Event.OTHERS; import static uk.gov.hmcts.reform.fpl.enums.Event.OTHER_PROCEEDINGS; import static uk.gov.hmcts.reform.fpl.enums.Event.RESPONDENTS; +import static uk.gov.hmcts.reform.fpl.enums.Event.RESPONDENTS_3RD_PARTY; import static uk.gov.hmcts.reform.fpl.enums.Event.RISK_AND_HARM; import static uk.gov.hmcts.reform.fpl.enums.Event.SELECT_COURT; import static uk.gov.hmcts.reform.fpl.enums.Event.SUBMIT_APPLICATION; @@ -107,8 +108,9 @@ private List groupInSections(List allTasks, Optional getEvents(CaseData caseData) { ORDERS_SOUGHT, featureToggles.isApplicantAdditionalContactsEnabled() ? LOCAL_AUTHORITY_DETAILS : ORGANISATION_DETAILS, CHILDREN, - RESPONDENTS, OTHER_PROCEEDINGS, OTHERS, COURT_SERVICES, @@ -91,6 +92,14 @@ private List getEvents(CaseData caseData) { ALLOCATION_PROPOSAL )); + // if we're a (new) 3rd party standalone, use that event, otherwise use default event + if (!RepresentativeType.LOCAL_AUTHORITY.equals(caseData.getRepresentativeType()) + && isNotEmpty(caseData.getRespondentLocalAuthority())) { + events.add(RESPONDENTS_3RD_PARTY); + } else { + events.add(RESPONDENTS); + } + if (YES.equals(caseData.getMultiCourts())) { events.add(SELECT_COURT); } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/respondent/RespondentAfterSubmissionValidator.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/respondent/RespondentAfterSubmissionValidator.java index aee29383ef4..fcffa72e30a 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/respondent/RespondentAfterSubmissionValidator.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/respondent/RespondentAfterSubmissionValidator.java @@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import uk.gov.hmcts.reform.ccd.model.Organisation; +import uk.gov.hmcts.reform.fpl.enums.YesNo; import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.model.Respondent; import uk.gov.hmcts.reform.fpl.model.RespondentSolicitor; @@ -24,6 +25,7 @@ import static org.apache.commons.lang3.StringUtils.isEmpty; import static uk.gov.hmcts.reform.fpl.enums.YesNo.NO; import static uk.gov.hmcts.reform.fpl.enums.YesNo.YES; +import static uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority.DUMMY_UUID; import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.nullSafeList; @Component @@ -43,7 +45,10 @@ public List validateLegalRepresentation(CaseData caseData, boolean hideR for (int i = 0; i < respondents.size(); i++) { Respondent respondent = respondents.get(i).getValue(); - errors.addAll(legalRepresentationErrors(respondent, hideRespondentIndex ? -1 : (i + 1))); + // Validate all 'people' respondents, not respondent LAs + if (YesNo.NO.equals(respondent.getIsLocalAuthority())) { + errors.addAll(legalRepresentationErrors(respondent, hideRespondentIndex ? -1 : (i + 1))); + } } return errors; @@ -57,7 +62,11 @@ public List validate(CaseData caseData, CaseData caseDataBefore, boolean List errors = new ArrayList<>(); Set currentRespondentIds = getIds(caseData.getAllRespondents()); - Set previousRespondentIds = getIds(caseDataBefore.getAllRespondents()); + + // get all previous respondents, discounting the Respondent Local Authority + Set previousRespondentIds = getIds(caseDataBefore.getAllRespondents()).stream() + .filter(el -> !DUMMY_UUID.equals(el)) + .collect(Collectors.toSet()); if (!currentRespondentIds.containsAll(previousRespondentIds)) { errors.add("You cannot remove a respondent from the case"); diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/CaseSubmissionChecker.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/CaseSubmissionChecker.java index 0491397fd86..a0b61f2bb24 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/CaseSubmissionChecker.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/CaseSubmissionChecker.java @@ -3,6 +3,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import uk.gov.hmcts.reform.fpl.enums.Event; +import uk.gov.hmcts.reform.fpl.enums.RepresentativeType; import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.model.submission.EventValidationErrors; import uk.gov.hmcts.reform.fpl.service.FeatureToggleService; @@ -20,6 +21,7 @@ import static uk.gov.hmcts.reform.fpl.enums.Event.ORDERS_SOUGHT; import static uk.gov.hmcts.reform.fpl.enums.Event.ORGANISATION_DETAILS; import static uk.gov.hmcts.reform.fpl.enums.Event.RESPONDENTS; +import static uk.gov.hmcts.reform.fpl.enums.Event.RESPONDENTS_3RD_PARTY; import static uk.gov.hmcts.reform.fpl.enums.Event.SELECT_COURT; import static uk.gov.hmcts.reform.fpl.enums.YesNo.YES; @@ -59,7 +61,7 @@ private List getRequiredEvents(CaseData caseData) { events.add(CASE_NAME); events.add(ORDERS_SOUGHT); - if (!caseData.isC1Application() + if (!caseData.isC1Application() || caseData.isRefuseContactWithChildApplication() || caseData.isContactWithChildInCareApplication()) { events.add(HEARING_URGENCY); // present but optional for C1s @@ -76,7 +78,15 @@ private List getRequiredEvents(CaseData caseData) { } events.add(CHILDREN); - events.add(RESPONDENTS); + + // if we're a (new) 3rd party standalone, use that event, otherwise use default event + if (!RepresentativeType.LOCAL_AUTHORITY.equals(caseData.getRepresentativeType()) + && isNotEmpty(caseData.getRespondentLocalAuthority())) { + events.add(RESPONDENTS_3RD_PARTY); + } else { + events.add(RESPONDENTS); + } + events.add(ALLOCATION_PROPOSAL); if (YES.equals(caseData.getMultiCourts())) { diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/EventsChecker.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/EventsChecker.java index 9ed9734a29f..c106256f84c 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/EventsChecker.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/EventsChecker.java @@ -30,6 +30,7 @@ import static uk.gov.hmcts.reform.fpl.enums.Event.OTHERS; import static uk.gov.hmcts.reform.fpl.enums.Event.OTHER_PROCEEDINGS; import static uk.gov.hmcts.reform.fpl.enums.Event.RESPONDENTS; +import static uk.gov.hmcts.reform.fpl.enums.Event.RESPONDENTS_3RD_PARTY; import static uk.gov.hmcts.reform.fpl.enums.Event.RISK_AND_HARM; import static uk.gov.hmcts.reform.fpl.enums.Event.SELECT_COURT; import static uk.gov.hmcts.reform.fpl.enums.Event.SUBMIT_APPLICATION; @@ -47,6 +48,9 @@ public class EventsChecker { @Autowired private RespondentsChecker respondentsChecker; + @Autowired + private Respondents3rdPartyChecker respondents3rdPartyChecker; + @Autowired private HearingUrgencyChecker hearingUrgencyChecker; @@ -106,6 +110,7 @@ public void init() { eventCheckers.put(CASE_NAME, caseNameChecker); eventCheckers.put(CHILDREN, childrenChecker); eventCheckers.put(RESPONDENTS, respondentsChecker); + eventCheckers.put(RESPONDENTS_3RD_PARTY, respondents3rdPartyChecker); eventCheckers.put(HEARING_URGENCY, hearingUrgencyChecker); eventCheckers.put(ORDERS_SOUGHT, ordersSoughtChecker); eventCheckers.put(GROUNDS, groundsChecker); diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/PropertiesChecker.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/PropertiesChecker.java index a7af19c5b38..27bc88e40a1 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/PropertiesChecker.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/PropertiesChecker.java @@ -35,6 +35,13 @@ public List validate(CaseData caseData, List propertiesToBeValid .collect(toList()); } + public List validate(Object object, Class... groups) { + return validator.validate(object, groups).stream() + .map(ConstraintViolation::getMessage) + .distinct() + .collect(toList()); + } + private String getViolatedProperty(ConstraintViolation violation) { final Iterator paths = violation.getPropertyPath().iterator(); if (paths.hasNext()) { diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyChecker.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyChecker.java new file mode 100644 index 00000000000..bcc67a035d8 --- /dev/null +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyChecker.java @@ -0,0 +1,65 @@ +package uk.gov.hmcts.reform.fpl.service.validators; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import uk.gov.hmcts.reform.fpl.enums.YesNo; +import uk.gov.hmcts.reform.fpl.model.CaseData; +import uk.gov.hmcts.reform.fpl.service.respondent.RespondentAfterSubmissionValidator; + +import java.util.ArrayList; +import java.util.List; + +import static org.apache.commons.lang3.ObjectUtils.isEmpty; +import static org.apache.commons.lang3.ObjectUtils.isNotEmpty; + +@Slf4j +@Component +@RequiredArgsConstructor(onConstructor_ = {@Autowired}) +public class Respondents3rdPartyChecker extends PropertiesChecker { + private final RespondentAfterSubmissionValidator respondentAfterSubmissionValidator; + + @Override + public List validate(CaseData caseData) { + List errors = new ArrayList<>(respondentAfterSubmissionValidator.validateLegalRepresentation(caseData)); + + // We no longer _need_ to have a party in respondents1 if just Respondent LA on case, but if we do then we + // should validate them + if (isNotEmpty(caseData.getRespondents1())) { + caseData.getRespondents1().forEach(respondent -> { + // only validate those that aren't LAs + if (YesNo.NO.equals(respondent.getValue().getIsLocalAuthority())) { + errors.addAll(super.validate(respondent)); + } + }); + } + + if (isNotEmpty(caseData.getRespondentLocalAuthority())) { + if (isEmpty(caseData.getRespondentLocalAuthority().getAddress())) { + errors.add("Respondent Local Authority address is required"); + } + if (isEmpty(caseData.getRespondentLocalAuthority().getEmail())) { + errors.add("Respondent Local Authority email is required"); + } + if (isEmpty(caseData.getRespondentLocalAuthority().getRepresentativeFirstName()) + || isEmpty(caseData.getRespondentLocalAuthority().getRepresentativeLastName())) { + errors.add("Respondent Local Authority lawyer is required"); + } + if (YesNo.YES.equals(caseData.getRespondentLocalAuthority().getUsingOtherOrg()) + && isEmpty(caseData.getRespondentLocalAuthority().getOrganisation())) { + errors.add("Respondent Local Authority outsourcing organisation is required"); + } + } else { + errors.add("Respondent Local Authority details need to be added"); + } + + return errors; + } + + @Override + public boolean isStarted(CaseData caseData) { + return false; + } + +} From e5348e7a7949cb1870a64c9bef56f6fefd6f096d Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Tue, 4 Feb 2025 16:19:50 +0000 Subject: [PATCH 10/47] missing mock bean --- .../RespondentsUpdatedEventHandlerEmailTemplateTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/handlers/RespondentsUpdatedEventHandlerEmailTemplateTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/handlers/RespondentsUpdatedEventHandlerEmailTemplateTest.java index 7bcab4de98d..242a5dbf96c 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/handlers/RespondentsUpdatedEventHandlerEmailTemplateTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/handlers/RespondentsUpdatedEventHandlerEmailTemplateTest.java @@ -17,6 +17,7 @@ import uk.gov.hmcts.reform.fpl.model.RespondentParty; import uk.gov.hmcts.reform.fpl.model.RespondentSolicitor; import uk.gov.hmcts.reform.fpl.model.UnregisteredOrganisation; +import uk.gov.hmcts.reform.fpl.service.LocalAuthorityService; import uk.gov.hmcts.reform.fpl.service.RespondentService; import uk.gov.hmcts.reform.fpl.service.cafcass.CafcassNotificationService; import uk.gov.hmcts.reform.fpl.service.email.content.representative.RegisteredRepresentativeSolicitorContentProvider; @@ -48,7 +49,8 @@ FixedTimeConfiguration.class }) @MockBeans({ - @MockBean(CafcassNotificationService.class) + @MockBean(CafcassNotificationService.class), + @MockBean(LocalAuthorityService.class) }) class RespondentsUpdatedEventHandlerEmailTemplateTest extends EmailTemplateTest { From 6ec7a4559f621ab4890cb89f968a829dc4d97249 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 5 Feb 2025 08:49:34 +0000 Subject: [PATCH 11/47] fix missing bean --- .../hmcts/reform/fpl/service/validators/EventsCheckerTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/EventsCheckerTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/EventsCheckerTest.java index e1114a001e6..720b4ffbe1a 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/EventsCheckerTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/EventsCheckerTest.java @@ -59,6 +59,8 @@ class EventsCheckerTest { @MockBean private RespondentsChecker respondentsChecker; @MockBean + private Respondents3rdPartyChecker respondents3rdPartyChecker; + @MockBean private HearingUrgencyChecker hearingUrgencyChecker; @MockBean private OrdersSoughtChecker ordersSoughtChecker; From b4cb8974a6c7f623727c85a9c841457c67a040df Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 5 Feb 2025 08:58:32 +0000 Subject: [PATCH 12/47] DFPL-2360: Add checker tests --- .../service/validators/EventsCheckerTest.java | 3 + .../Respondents3rdPartyCheckerTest.java | 64 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyCheckerTest.java diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/EventsCheckerTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/EventsCheckerTest.java index 720b4ffbe1a..a259a767572 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/EventsCheckerTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/EventsCheckerTest.java @@ -42,6 +42,7 @@ import static uk.gov.hmcts.reform.fpl.enums.Event.OTHERS; import static uk.gov.hmcts.reform.fpl.enums.Event.OTHER_PROCEEDINGS; import static uk.gov.hmcts.reform.fpl.enums.Event.RESPONDENTS; +import static uk.gov.hmcts.reform.fpl.enums.Event.RESPONDENTS_3RD_PARTY; import static uk.gov.hmcts.reform.fpl.enums.Event.RISK_AND_HARM; import static uk.gov.hmcts.reform.fpl.enums.Event.SELECT_COURT; import static uk.gov.hmcts.reform.fpl.enums.Event.SUBMIT_APPLICATION; @@ -154,6 +155,7 @@ void verifyNoMoreInteractionsWithValidators() { caseNameChecker, childrenChecker, respondentsChecker, + respondents3rdPartyChecker, hearingUrgencyChecker, ordersSoughtChecker, groundsChecker, @@ -178,6 +180,7 @@ private Stream getEventsValidators() { Arguments.of(CASE_NAME, caseNameChecker), Arguments.of(CHILDREN, childrenChecker), Arguments.of(RESPONDENTS, respondentsChecker), + Arguments.of(RESPONDENTS_3RD_PARTY, respondents3rdPartyChecker), Arguments.of(HEARING_URGENCY, hearingUrgencyChecker), Arguments.of(ORDERS_SOUGHT, ordersSoughtChecker), Arguments.of(GROUNDS, groundsChecker), diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyCheckerTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyCheckerTest.java new file mode 100644 index 00000000000..078c2b7f186 --- /dev/null +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyCheckerTest.java @@ -0,0 +1,64 @@ +package uk.gov.hmcts.reform.fpl.service.validators; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; +import uk.gov.hmcts.reform.fpl.model.CaseData; +import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; +import uk.gov.hmcts.reform.fpl.service.respondent.RespondentAfterSubmissionValidator; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.BDDMockito.given; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = {Respondents3rdPartyChecker.class, LocalValidatorFactoryBean.class, + RespondentAfterSubmissionValidator.class}) +class Respondents3rdPartyCheckerTest { + + @Autowired + private Respondents3rdPartyChecker respondents3rdPartyChecker; + + @MockBean + private RespondentAfterSubmissionValidator respondentAfterSubmissionValidator; + + @BeforeEach + void validatorMock() { + given(respondentAfterSubmissionValidator.validateLegalRepresentation(any())).willReturn(List.of()); + } + + @Test + void shouldReturnErrorWhenNoLADetails() { + final CaseData caseData = CaseData.builder() + .respondentLocalAuthority(RespondentLocalAuthority.builder().build()) + .build(); + + final List errors = respondents3rdPartyChecker.validate(caseData); + final boolean isCompleted = respondents3rdPartyChecker.isCompleted(caseData); + + assertThat(errors).contains("Respondent Local Authority address is required", + "Respondent Local Authority email is required", + "Respondent Local Authority lawyer is required"); + assertThat(isCompleted).isFalse(); + } + + @Test + void shouldReturnErrorWhenNoLAObject() { + final CaseData caseData = CaseData.builder() + .build(); + + final List errors = respondents3rdPartyChecker.validate(caseData); + final boolean isCompleted = respondents3rdPartyChecker.isCompleted(caseData); + + assertThat(errors).contains("Respondent Local Authority details need to be added"); + assertThat(isCompleted).isFalse(); + } + +} From fa7b7a8f2ead1b2ce6c46d23587cb63c930da355 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 5 Feb 2025 09:13:26 +0000 Subject: [PATCH 13/47] DFPL-2360: Add about-to-start tests --- .../RespondentControllerAboutToStartTest.java | 58 +++++++++++++++++++ .../fpl/model/RespondentLocalAuthority.java | 3 +- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java index 66b6d837652..9fee40d9718 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java @@ -5,10 +5,24 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import uk.gov.hmcts.reform.ccd.client.model.AboutToStartOrSubmitCallbackResponse; import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; +import uk.gov.hmcts.reform.ccd.model.Organisation; +import uk.gov.hmcts.reform.fpl.enums.RepresentativeType; +import uk.gov.hmcts.reform.fpl.enums.YesNo; +import uk.gov.hmcts.reform.fpl.model.Address; +import uk.gov.hmcts.reform.fpl.model.CaseData; +import uk.gov.hmcts.reform.fpl.model.Respondent; +import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; +import uk.gov.hmcts.reform.fpl.model.RespondentParty; +import uk.gov.hmcts.reform.fpl.model.RespondentSolicitor; +import uk.gov.hmcts.reform.fpl.model.common.EmailAddress; +import uk.gov.hmcts.reform.fpl.model.common.Telephone; +import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; +import static uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority.DUMMY_UUID; +import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.element; @WebMvcTest(RespondentController.class) @OverrideAutoConfiguration(enabled = true) @@ -27,5 +41,49 @@ void aboutToStartShouldPrePopulateRespondent() { AboutToStartOrSubmitCallbackResponse callbackResponse = postAboutToStartEvent(caseDetails); assertThat(callbackResponse.getData()).containsKey("respondents1"); + assertThat(callbackResponse.getData()).doesNotContainKey("respondentLocalAuthority"); + } + + @Test + void shouldPopulateRespondentLA() { + CaseData caseData = CaseData.builder() + .representativeType(RepresentativeType.RESPONDENT_SOLICITOR) + .respondentLocalAuthority(RespondentLocalAuthority.builder().build()) + .respondents1(List.of(element(DUMMY_UUID, Respondent.builder() + .party(RespondentParty.builder() + .firstName("Swansea County Council") + .address(Address.builder().addressLine1("addr1").build()) + .build()) + .solicitor(RespondentSolicitor.builder() + .email("test@test.com") + .telephoneNumber(Telephone.builder().telephoneNumber("123").build()) + .organisation(Organisation.builder() + .organisationName("Swansea") + .organisationID("test") + .build()) + .firstName("John") + .lastName("Smith") + .build()) + .usingOtherOrg(YesNo.NO) + .isLocalAuthority(YesNo.YES) + .build()))) + .build(); + + AboutToStartOrSubmitCallbackResponse callbackResponse = postAboutToStartEvent(caseData); + CaseData after = mapper.convertValue(callbackResponse.getData(), CaseData.class); + assertThat(after).extracting("respondentLocalAuthority") + .isEqualTo(RespondentLocalAuthority.builder() + .name("Swansea County Council") + .address(Address.builder().addressLine1("addr1").build()) + .email("test@test.com") + .representativeFirstName("John") + .representativeLastName("Smith") + .organisation(Organisation.builder() + .organisationName("Swansea") + .organisationID("test") + .build()) + .phoneNumber("123") + .usingOtherOrg(YesNo.NO) + .build()); } } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentLocalAuthority.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentLocalAuthority.java index 58ba012a405..7071da44352 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentLocalAuthority.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/RespondentLocalAuthority.java @@ -67,8 +67,7 @@ public static RespondentLocalAuthority fromRespondent(Respondent respondent) { .representativeLastName(respondent.getSolicitor().getLastName()) .address(respondent.getParty().getAddress()) .usingOtherOrg(respondent.getUsingOtherOrg()) - .organisation(YES.equals(respondent.getUsingOtherOrg()) - ? respondent.getSolicitor().getOrganisation() : null) + .organisation(respondent.getSolicitor().getOrganisation()) .legalCounsellors(respondent.getLegalCounsellors()) .build(); } From 1e9b16e291cdcf0aa0f5bc26dc08410de948dfa9 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 5 Feb 2025 11:21:24 +0000 Subject: [PATCH 14/47] DFPL-2360: about-to-submit tests --- .../RespondentControllerAboutToStartTest.java | 1 - ...RespondentControllerAboutToSubmitTest.java | 52 +++++++++++++++++++ .../reform/fpl/service/RespondentService.java | 14 +++-- 3 files changed, 61 insertions(+), 6 deletions(-) diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java index 9fee40d9718..b37073b51b7 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java @@ -14,7 +14,6 @@ import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; import uk.gov.hmcts.reform.fpl.model.RespondentParty; import uk.gov.hmcts.reform.fpl.model.RespondentSolicitor; -import uk.gov.hmcts.reform.fpl.model.common.EmailAddress; import uk.gov.hmcts.reform.fpl.model.common.Telephone; import java.util.List; diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToSubmitTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToSubmitTest.java index f44cfac912a..fc461e97025 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToSubmitTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToSubmitTest.java @@ -6,6 +6,9 @@ import uk.gov.hmcts.reform.ccd.client.model.AboutToStartOrSubmitCallbackResponse; import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; import uk.gov.hmcts.reform.ccd.model.Organisation; +import uk.gov.hmcts.reform.fpl.enums.RepresentativeType; +import uk.gov.hmcts.reform.fpl.enums.YesNo; +import uk.gov.hmcts.reform.fpl.model.Address; import uk.gov.hmcts.reform.fpl.model.Applicant; import uk.gov.hmcts.reform.fpl.model.ApplicantParty; import uk.gov.hmcts.reform.fpl.model.CaseData; @@ -13,9 +16,11 @@ import uk.gov.hmcts.reform.fpl.model.LocalAuthority; import uk.gov.hmcts.reform.fpl.model.NoticeOfChangeAnswersData; import uk.gov.hmcts.reform.fpl.model.Respondent; +import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; import uk.gov.hmcts.reform.fpl.model.RespondentParty; import uk.gov.hmcts.reform.fpl.model.RespondentSolicitor; import uk.gov.hmcts.reform.fpl.model.common.Element; +import uk.gov.hmcts.reform.fpl.model.common.Telephone; import uk.gov.hmcts.reform.fpl.model.noticeofchange.NoticeOfChangeAnswers; import java.time.LocalDate; @@ -26,6 +31,7 @@ import static uk.gov.hmcts.reform.fpl.enums.State.OPEN; import static uk.gov.hmcts.reform.fpl.enums.State.SUBMITTED; import static uk.gov.hmcts.reform.fpl.enums.YesNo.YES; +import static uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority.DUMMY_UUID; import static uk.gov.hmcts.reform.fpl.utils.CoreCaseDataStoreLoader.callbackRequest; import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.element; import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.wrapElements; @@ -187,6 +193,52 @@ void shouldAddConfidentialRespondentsToCaseDataWhenConfidentialRespondentsExist( assertThat(caseData.getRespondents1().get(1).getValue().getParty().getAddress()).isNotNull(); } + @Test + void shouldPushLocalAuthorityIntoRespondentsCollection() { + CaseData caseData = CaseData.builder() + .representativeType(RepresentativeType.RESPONDENT_SOLICITOR) + .relatingLA("test1") + .respondentLocalAuthority(RespondentLocalAuthority.builder() + .name("Swansea County Council") + .address(Address.builder().addressLine1("addr1").build()) + .email("test@test.com") + .representativeFirstName("John") + .representativeLastName("Smith") + .organisation(Organisation.builder() + .organisationName("Swansea") + .organisationID("test") + .build()) + .phoneNumber("123") + .usingOtherOrg(YesNo.YES) + .build()) + .respondents1(List.of()) + .build(); + + CaseData after = extractCaseData(postAboutToSubmitEvent(caseData)); + + assertThat(after.getRespondents1()).containsExactly( + element(DUMMY_UUID, Respondent.builder() + .party(RespondentParty.builder() + .firstName("Swansea County Council") + .address(Address.builder().addressLine1("addr1").build()) + .relationshipToChild("Local Authority") + .build()) + .legalRepresentation(YesNo.YES.getValue()) + .solicitor(RespondentSolicitor.builder() + .email("test@test.com") + .telephoneNumber(Telephone.builder().telephoneNumber("123").build()) + .organisation(Organisation.builder() + .organisationName("Swansea") + .organisationID("test") + .build()) + .firstName("John") + .lastName("Smith") + .build()) + .usingOtherOrg(YesNo.YES) + .isLocalAuthority(YesNo.YES) + .build())); + } + private Respondent respondent(LocalDate dateOfBirth) { return Respondent.builder() .party(RespondentParty.builder() diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java index cde24d89c25..2e089bf313e 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java @@ -301,11 +301,11 @@ public Respondent transformOtherToRespondent(Other other) { public void transformRespondentLocalAuthority(CaseDetails caseDetails, CaseData caseData, CaseData caseDataBefore) { List> respondents = caseData.getRespondents1(); - Element oldFakeRespondentLA = caseDataBefore.getRespondents1().get(0); - if (!oldFakeRespondentLA.getId().equals(DUMMY_UUID)) { - throw new IllegalArgumentException("This is not a valid Respondent Local Authority"); - } + // get the current respondentLA stored in collection, if not use a new blank respondent as the base + Element oldFakeRespondentLA = isEmpty(caseData.getRespondents1()) + ? element(DUMMY_UUID, Respondent.builder().build()) + : caseDataBefore.getRespondents1().get(0); RespondentLocalAuthority respondentLA = caseData.getRespondentLocalAuthority(); @@ -320,7 +320,11 @@ public void transformRespondentLocalAuthority(CaseDetails caseDetails, CaseData // using the old "fake" respondentLA as a base, update data modified on UI // so we persist data attached to the "Respondent" instance, i.e. colleaguesToNotify, and any new "respondent" // specific functionality in the future - respondents.add(0, respondentLA.toRespondent(oldFakeRespondentLA.getValue())); + if (isNotEmpty(oldFakeRespondentLA) && DUMMY_UUID.equals(oldFakeRespondentLA.getId())) { + respondents.add(0, respondentLA.toRespondent(oldFakeRespondentLA.getValue())); + } else { + respondents.add(0, respondentLA.toRespondent(Respondent.builder().build())); + } caseDetails.getData().put("respondents1", respondents); } From 9d6d91508349ce316422f83481fb063e9f442682 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 5 Feb 2025 16:09:11 +0000 Subject: [PATCH 15/47] DFPL-2360: Checker tests --- .../Respondents3rdPartyCheckerTest.java | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyCheckerTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyCheckerTest.java index 078c2b7f186..4482a1382bc 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyCheckerTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/validators/Respondents3rdPartyCheckerTest.java @@ -1,6 +1,7 @@ package uk.gov.hmcts.reform.fpl.service.validators; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -8,15 +9,21 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; +import uk.gov.hmcts.reform.fpl.enums.YesNo; +import uk.gov.hmcts.reform.fpl.model.Address; import uk.gov.hmcts.reform.fpl.model.CaseData; +import uk.gov.hmcts.reform.fpl.model.Respondent; import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; +import uk.gov.hmcts.reform.fpl.model.RespondentParty; import uk.gov.hmcts.reform.fpl.service.respondent.RespondentAfterSubmissionValidator; +import uk.gov.hmcts.reform.fpl.utils.ElementUtils; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; +import static uk.gov.hmcts.reform.fpl.enums.YesNo.NO; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {Respondents3rdPartyChecker.class, LocalValidatorFactoryBean.class, @@ -29,6 +36,16 @@ class Respondents3rdPartyCheckerTest { @MockBean private RespondentAfterSubmissionValidator respondentAfterSubmissionValidator; + private static final RespondentLocalAuthority FULL_RESPONDENT_LA = RespondentLocalAuthority.builder() + .name("Swansea County Council") + .address(Address.builder().build()) + .representativeFirstName("John") + .representativeLastName("Smith") + .email("test@test.com") + .phoneNumber("1234") + .usingOtherOrg(YesNo.NO) + .build(); + @BeforeEach void validatorMock() { given(respondentAfterSubmissionValidator.validateLegalRepresentation(any())).willReturn(List.of()); @@ -49,6 +66,68 @@ void shouldReturnErrorWhenNoLADetails() { assertThat(isCompleted).isFalse(); } + @Test + void shouldReturnErrorWhenNoLaywerLastName() { + final CaseData caseData = CaseData.builder() + .respondentLocalAuthority(RespondentLocalAuthority.builder() + .representativeFirstName("John") + .representativeLastName(null) + .build()) + .build(); + + final List errors = respondents3rdPartyChecker.validate(caseData); + final boolean isCompleted = respondents3rdPartyChecker.isCompleted(caseData); + + assertThat(errors).contains("Respondent Local Authority lawyer is required"); + assertThat(isCompleted).isFalse(); + } + + @Test + void shouldReturnErrorWhenNoLaywerFirstName() { + final CaseData caseData = CaseData.builder() + .respondentLocalAuthority(RespondentLocalAuthority.builder() + .representativeFirstName(null) + .representativeLastName("Smith") + .build()) + .build(); + + final List errors = respondents3rdPartyChecker.validate(caseData); + final boolean isCompleted = respondents3rdPartyChecker.isCompleted(caseData); + + assertThat(errors).contains("Respondent Local Authority lawyer is required"); + assertThat(isCompleted).isFalse(); + } + + @Test + void shouldReturnErrorWhenNeedsOutsourcingButDoesntHaveOutsourcingOrgSet() { + final CaseData caseData = CaseData.builder() + .respondentLocalAuthority(RespondentLocalAuthority.builder() + .usingOtherOrg(YesNo.YES) + .organisation(null) + .build()) + .build(); + + final List errors = respondents3rdPartyChecker.validate(caseData); + final boolean isCompleted = respondents3rdPartyChecker.isCompleted(caseData); + + assertThat(errors).contains("Respondent Local Authority outsourcing organisation is required"); + assertThat(isCompleted).isFalse(); + } + + @Test + void shouldHaveNoErrorsIfAllMandatoryFieldsFilledIn() { + final CaseData caseData = CaseData.builder() + .respondentLocalAuthority(FULL_RESPONDENT_LA) + .build(); + + final List errors = respondents3rdPartyChecker.validate(caseData); + final boolean isCompleted = respondents3rdPartyChecker.isCompleted(caseData); + + assertThat(errors).isEmpty(); + assertThat(isCompleted).isTrue(); + } + + @Test void shouldReturnErrorWhenNoLAObject() { final CaseData caseData = CaseData.builder() @@ -61,4 +140,37 @@ void shouldReturnErrorWhenNoLAObject() { assertThat(isCompleted).isFalse(); } + @Test + void shouldReturnFalseForIsStarted() { + assertThat(respondents3rdPartyChecker.isStarted(CaseData.builder().build())).isFalse(); + } + + @Nested + class RespondentsChecker { + + @Test + void shouldNotReturnErrorsWhenNoLegalRepresentationNeeded() { + final Respondent respondent = Respondent.builder() + .party(RespondentParty.builder() + .firstName("John") + .lastName("Smith") + .relationshipToChild("Uncle") + .build()) + .legalRepresentation(NO.getValue()) + .isLocalAuthority(NO) + .build(); + final CaseData caseData = CaseData.builder() + .respondentLocalAuthority(FULL_RESPONDENT_LA) + .respondents1(ElementUtils.wrapElements(respondent)) + .build(); + + final List errors = respondents3rdPartyChecker.validate(caseData); + final boolean isCompleted = respondents3rdPartyChecker.isCompleted(caseData); + + assertThat(errors).isEmpty(); + assertThat(isCompleted).isTrue(); + } + + } + } From d06ae68ddb800dc0ad5f8a279c528468b15b8d79 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 5 Feb 2025 16:35:36 +0000 Subject: [PATCH 16/47] DFPL-2360: MetadataController tests --- .../fpl/controllers/AbstractCallbackTest.java | 5 ++ .../controllers/MetadataControllerTest.java | 68 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/AbstractCallbackTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/AbstractCallbackTest.java index 31e28f21ca3..391892e8e08 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/AbstractCallbackTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/AbstractCallbackTest.java @@ -283,6 +283,11 @@ private AboutToStartOrSubmitCallbackResponse postEvent(String path, byte[] data, return postEvent(path, data, expectedStatus, AboutToStartOrSubmitCallbackResponse.class, userRoles); } + @SuppressWarnings("unchecked") + public Map postMetadataCallback(String path, CallbackRequest callbackRequest) { + return postEvent(path, toBytes(callbackRequest), SC_OK, Map.class); + } + private T postEvent(String path, byte[] data, int expectedStatus, Class responseType, String... userRoles) { try { MvcResult response = mockMvc diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java new file mode 100644 index 00000000000..78d4397cd6d --- /dev/null +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java @@ -0,0 +1,68 @@ +package uk.gov.hmcts.reform.fpl.controllers; + +import com.fasterxml.jackson.core.type.TypeReference; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; +import uk.gov.hmcts.reform.fpl.model.CaseData; +import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; + +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +@WebMvcTest(MetadataController.class) +@OverrideAutoConfiguration(enabled = true) +public class MetadataControllerTest extends AbstractCallbackTest { + + protected MetadataControllerTest() { + super("getCase"); + } + + @Test + void shouldReturn3rdPartyFlagIfYes() { + CaseData caseData = CaseData.builder() + .respondentLocalAuthority(RespondentLocalAuthority.builder() + .name("Swansea County Council") + .build()) + .build(); + CallbackRequest cb = toCallBackRequest(caseData, caseData); + + Map response = postMetadataCallback("/callback/getCase/metadata", cb); + + List metadataFields = mapper.convertValue( + response.get("metadataFields"), new TypeReference<>() {}); + + assertThat(metadataFields) + .contains(MetadataController.CaseViewField.builder() + .id("[INJECTED_DATA.HAS_3RD_PARTY]") + .label("Has a respondent local authority been added to the case?") + .value("Yes") + .fieldType(MetadataController.FieldType.TEXT) + .build()); + } + + @Test + void shouldReturn3rdPartyFlagIfNo() { + CaseData caseData = CaseData.builder() + .respondentLocalAuthority(null) + .build(); + CallbackRequest cb = toCallBackRequest(caseData, caseData); + + Map response = postMetadataCallback("/callback/getCase/metadata", cb); + + List metadataFields = mapper.convertValue( + response.get("metadataFields"), new TypeReference<>() {}); + + assertThat(metadataFields) + .contains(MetadataController.CaseViewField.builder() + .id("[INJECTED_DATA.HAS_3RD_PARTY]") + .label("Has a respondent local authority been added to the case?") + .value("No") + .fieldType(MetadataController.FieldType.TEXT) + .build()); + } + +} From 8138181827a0d9b2dd1ab1db827f8270dc36fac5 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 5 Feb 2025 16:48:24 +0000 Subject: [PATCH 17/47] DFPL-2360: Rearrange --- .../reform/fpl/controllers/AbstractCallbackTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/AbstractCallbackTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/AbstractCallbackTest.java index 391892e8e08..99516618653 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/AbstractCallbackTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/AbstractCallbackTest.java @@ -283,11 +283,6 @@ private AboutToStartOrSubmitCallbackResponse postEvent(String path, byte[] data, return postEvent(path, data, expectedStatus, AboutToStartOrSubmitCallbackResponse.class, userRoles); } - @SuppressWarnings("unchecked") - public Map postMetadataCallback(String path, CallbackRequest callbackRequest) { - return postEvent(path, toBytes(callbackRequest), SC_OK, Map.class); - } - private T postEvent(String path, byte[] data, int expectedStatus, Class responseType, String... userRoles) { try { MvcResult response = mockMvc @@ -312,6 +307,11 @@ private T postEvent(String path, byte[] data, int expectedStatus, Class r } } + @SuppressWarnings("unchecked") + public Map postMetadataCallback(String path, CallbackRequest callbackRequest) { + return postEvent(path, toBytes(callbackRequest), SC_OK, Map.class); + } + private byte[] toBytes(Object o) { try { return mapper.writeValueAsString(o).getBytes(); From c4e710db50cb6ed59518e92a5f5f6befee9700c8 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Thu, 6 Feb 2025 08:50:16 +0000 Subject: [PATCH 18/47] DFPL-2360: refactor into different file, cleanup unnecessary code --- .../controllers/MetadataControllerTest.java | 13 ++-- .../fpl/controllers/MetadataController.java | 65 +------------------ .../hmcts/reform/fpl/model/CaseViewField.java | 53 +++++++++++++++ 3 files changed, 63 insertions(+), 68 deletions(-) create mode 100644 service/src/main/java/uk/gov/hmcts/reform/fpl/model/CaseViewField.java diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java index 78d4397cd6d..9faca1b74b6 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java @@ -6,6 +6,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; import uk.gov.hmcts.reform.fpl.model.CaseData; +import uk.gov.hmcts.reform.fpl.model.CaseViewField; import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; import java.util.List; @@ -32,15 +33,15 @@ void shouldReturn3rdPartyFlagIfYes() { Map response = postMetadataCallback("/callback/getCase/metadata", cb); - List metadataFields = mapper.convertValue( + List metadataFields = mapper.convertValue( response.get("metadataFields"), new TypeReference<>() {}); assertThat(metadataFields) - .contains(MetadataController.CaseViewField.builder() + .contains(CaseViewField.builder() .id("[INJECTED_DATA.HAS_3RD_PARTY]") .label("Has a respondent local authority been added to the case?") .value("Yes") - .fieldType(MetadataController.FieldType.TEXT) + .fieldType(CaseViewField.FieldType.TEXT) .build()); } @@ -53,15 +54,15 @@ void shouldReturn3rdPartyFlagIfNo() { Map response = postMetadataCallback("/callback/getCase/metadata", cb); - List metadataFields = mapper.convertValue( + List metadataFields = mapper.convertValue( response.get("metadataFields"), new TypeReference<>() {}); assertThat(metadataFields) - .contains(MetadataController.CaseViewField.builder() + .contains(CaseViewField.builder() .id("[INJECTED_DATA.HAS_3RD_PARTY]") .label("Has a respondent local authority been added to the case?") .value("No") - .fieldType(MetadataController.FieldType.TEXT) + .fieldType(CaseViewField.FieldType.TEXT) .build()); } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java index 902b915befd..10b289cbbac 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java @@ -1,10 +1,6 @@ package uk.gov.hmcts.reform.fpl.controllers; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -13,8 +9,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; -import uk.gov.hmcts.reform.fpl.handlers.CaseEventHandler; import uk.gov.hmcts.reform.fpl.model.CaseData; +import uk.gov.hmcts.reform.fpl.model.CaseViewField; import java.util.List; import java.util.Map; @@ -28,8 +24,6 @@ @RequiredArgsConstructor(onConstructor_ = {@Autowired}) public class MetadataController extends CallbackController { - private final CaseEventHandler caseEventHandler; - @PostMapping("/metadata") public Map getMetaData(@RequestBody CallbackRequest request) { CaseData caseData = getCaseData(request); @@ -39,63 +33,10 @@ public Map getMetaData(@RequestBody CallbackRequest request) { .id("[INJECTED_DATA.HAS_3RD_PARTY]") .label("Has a respondent local authority been added to the case?") .value(isEmpty(caseData.getRespondentLocalAuthority()) ? "No" : "Yes") - .fieldType(FieldType.TEXT) - .build()/*, - CaseViewField.builder() - .id("[INJECTED_DATA__TASK_LIST]") - .label("Task List") - .value(List.of(OPEN, RETURNED).contains(caseData.getState()) - ? caseEventHandler.getUpdates(request.getCaseDetails()).get("taskList") : "") - .fieldType(FieldType.TEXT) - .hidden(false) - .build() */ + .fieldType(CaseViewField.FieldType.TEXT) + .build() )); } - @Data - @Builder - @AllArgsConstructor - static class CaseViewField { - private String id; - private String label; - private Object value; - - @JsonProperty("formatted_value") - private Object formattedValue; - - public Object getFormattedValue() { - return value; - } - - @JsonProperty("field_type") - private FieldType fieldType; - @JsonProperty("security_label") - private final String securityLabel = "PUBLIC"; - - private final boolean metadata = true; - @Builder.Default - private boolean hidden = true; - } - - @Data - @Builder - @AllArgsConstructor - static class FieldType { - private final String id; - private final String type; - private final String min = null; - private final String max = null; - - @JsonProperty("regular_expression") - private final String regularExpression = null; - @JsonProperty("fixed_list_items") - private final List fixedListItems = List.of(); - @JsonProperty("complex_fields") - private final List complexFields = List.of(); - @JsonProperty("collection_field_type") - private final FieldType collectionFieldType = null; - - public static FieldType TEXT = new FieldType("Text", "Text"); - } } diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/model/CaseViewField.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/CaseViewField.java new file mode 100644 index 00000000000..f918b87ea26 --- /dev/null +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/model/CaseViewField.java @@ -0,0 +1,53 @@ +package uk.gov.hmcts.reform.fpl.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +public class CaseViewField { + private String id; + private String label; + private Object value; + + @JsonProperty("formatted_value") + private Object formattedValue; + + @JsonProperty("field_type") + private FieldType fieldType; + @JsonProperty("security_label") + private final String securityLabel = "PUBLIC"; + + private final boolean metadata = true; + @Builder.Default + private boolean hidden = true; + + + @Data + @Builder + @AllArgsConstructor + public static class FieldType { + private final String id; + private final String type; + private final String min = null; + private final String max = null; + + @JsonProperty("regular_expression") + private final String regularExpression = null; + @JsonProperty("fixed_list_items") + private final List fixedListItems = List.of(); + @JsonProperty("complex_fields") + private final List complexFields = List.of(); + @JsonProperty("collection_field_type") + private final FieldType collectionFieldType = null; + + public static FieldType TEXT = new FieldType("Text", "Text"); + } + +} + From 70373c0ae03657b3e3e3c6648ff4576dc5a1fa38 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Thu, 6 Feb 2025 09:06:00 +0000 Subject: [PATCH 19/47] DFPL-2360: More tests --- .../reform/fpl/service/RespondentService.java | 6 +- .../fpl/service/RespondentServiceTest.java | 60 +++++++++++++++++++ 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java index 2e089bf313e..be26380ecc7 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java @@ -300,12 +300,12 @@ public Respondent transformOtherToRespondent(Other other) { } public void transformRespondentLocalAuthority(CaseDetails caseDetails, CaseData caseData, CaseData caseDataBefore) { - List> respondents = caseData.getRespondents1(); + List> respondents = caseData.getAllRespondents(); // get the current respondentLA stored in collection, if not use a new blank respondent as the base - Element oldFakeRespondentLA = isEmpty(caseData.getRespondents1()) + Element oldFakeRespondentLA = isEmpty(caseData.getAllRespondents()) ? element(DUMMY_UUID, Respondent.builder().build()) - : caseDataBefore.getRespondents1().get(0); + : caseDataBefore.getAllRespondents().get(0); RespondentLocalAuthority respondentLA = caseData.getRespondentLocalAuthority(); diff --git a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/RespondentServiceTest.java b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/RespondentServiceTest.java index 2170667256f..7dbc7498437 100644 --- a/service/src/test/java/uk/gov/hmcts/reform/fpl/service/RespondentServiceTest.java +++ b/service/src/test/java/uk/gov/hmcts/reform/fpl/service/RespondentServiceTest.java @@ -1,5 +1,6 @@ package uk.gov.hmcts.reform.fpl.service; +import org.assertj.core.api.InstanceOfAssertFactories; import org.assertj.core.util.Lists; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -8,8 +9,10 @@ import org.junit.jupiter.params.provider.NullAndEmptySource; import org.junit.jupiter.params.provider.ValueSource; import org.mockito.InjectMocks; +import org.mockito.Mock; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; +import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; import uk.gov.hmcts.reform.ccd.model.ChangeOrganisationRequest; import uk.gov.hmcts.reform.ccd.model.Organisation; import uk.gov.hmcts.reform.fpl.enums.IsAddressKnowType; @@ -18,6 +21,7 @@ import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.model.Other; import uk.gov.hmcts.reform.fpl.model.Respondent; +import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; import uk.gov.hmcts.reform.fpl.model.RespondentParty; import uk.gov.hmcts.reform.fpl.model.RespondentSolicitor; import uk.gov.hmcts.reform.fpl.model.UnregisteredOrganisation; @@ -31,16 +35,20 @@ import java.time.LocalDate; import java.time.Month; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.UUID; import static java.util.Collections.emptyList; import static org.apache.commons.lang3.StringUtils.isBlank; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; import static uk.gov.hmcts.reform.ccd.model.ChangeOrganisationApprovalStatus.APPROVED; import static uk.gov.hmcts.reform.ccd.model.Organisation.organisation; import static uk.gov.hmcts.reform.fpl.enums.YesNo.NO; import static uk.gov.hmcts.reform.fpl.enums.YesNo.YES; +import static uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority.DUMMY_UUID; import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.element; import static uk.gov.hmcts.reform.fpl.utils.ElementUtils.wrapElements; import static uk.gov.hmcts.reform.fpl.utils.RespondentsTestHelper.respondent; @@ -52,6 +60,9 @@ class RespondentServiceTest { @Spy private Time time = new FixedTimeConfiguration().stoppedTime(); + @Mock + private LocalAuthorityService localAuthorityService; + @InjectMocks private RespondentService service; @@ -677,4 +688,53 @@ void shouldGetRespondentSolicitorTelephones() { assertThat(respondentSolicitorTelephones).containsExactlyInAnyOrder("1234 567 890"); } + @Test + void shouldTransformLocalAuthorityWithCorrectOrg() { + when(localAuthorityService.getLocalAuthorityId(any())).thenReturn("ORG1"); + when(localAuthorityService.getLocalAuthorityName(any())).thenReturn("Local Authority"); + RespondentLocalAuthority respondentLocalAuthority = RespondentLocalAuthority.builder() + .name("Local Authority") + .email("test@test.com") + .phoneNumber("1234") + .address(Address.builder().build()) + .usingOtherOrg(NO) + .build(); + + CaseData caseDataBefore = CaseData.builder() + .respondentLocalAuthority(respondentLocalAuthority) + .build(); + + CaseData caseData = caseDataBefore.toBuilder() + .respondentLocalAuthority(respondentLocalAuthority) + .build(); + + + CaseDetails caseDetails = CaseDetails.builder().data(new HashMap<>()).build(); + service.transformRespondentLocalAuthority(caseDetails, caseData, caseDataBefore); + + Respondent expectedRespondent = Respondent.builder() + .party(RespondentParty.builder() + .firstName("Local Authority") + .relationshipToChild("Local Authority") + .address(Address.builder().build()) + .addressKnow(IsAddressKnowType.YES) + .build()) + .usingOtherOrg(NO) + .isLocalAuthority(YES) + .legalRepresentation(YES.getValue()) + .solicitor(RespondentSolicitor.builder() + .telephoneNumber(Telephone.builder().telephoneNumber("1234").build()) + .email("test@test.com") + .organisation(Organisation.builder() + .organisationID("ORG1") + .organisationName("Local Authority") + .build()) + .build()) + .build(); + + assertThat(caseDetails.getData()).extracting("respondents1") + .asInstanceOf(InstanceOfAssertFactories.LIST) + .contains(element(DUMMY_UUID, expectedRespondent)); + } + } From 176e54eaec614aac74f119db58f58009616ae762 Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Tue, 11 Feb 2025 08:29:31 +0000 Subject: [PATCH 20/47] DFPL-2361 Added changes to figma --- playwright-e2e/pages/respondent-details.ts | 69 ++++++++++------------ 1 file changed, 31 insertions(+), 38 deletions(-) diff --git a/playwright-e2e/pages/respondent-details.ts b/playwright-e2e/pages/respondent-details.ts index 8f9bab14403..3bf90deb725 100644 --- a/playwright-e2e/pages/respondent-details.ts +++ b/playwright-e2e/pages/respondent-details.ts @@ -1,4 +1,4 @@ -import {type Page, type Locator, expect} from "@playwright/test"; +import { type Page, type Locator, expect } from "@playwright/test"; export class RespondentDetails { @@ -6,69 +6,62 @@ export class RespondentDetails { readonly respondentDetailsHeading: Locator; readonly firstName: Locator; readonly lastName: Locator; - readonly dobDay: Locator; //DOB (date of birth) + readonly dobDay: Locator; readonly dobMonth: Locator; readonly dobYear: Locator; readonly gender: Locator; readonly currentAddress: Locator; + readonly addressUnknown: Locator; + readonly giveMoreDetails: Locator; readonly telephone: Locator; readonly relationToChild: Locator; - readonly relationToChildContact: Locator; //corresponds to yes or no radio feature: 'Do you need contact details hidden from other parties? (Optional)' - readonly relationToChildContactReason: Locator; - readonly litigationCapacity: Locator; //ie Ability to take part in proceedings - readonly litigationCapacityReason: Locator; + readonly difficultyCapacity: Locator; + readonly difficultyCapacityReason: Locator; readonly legalRepresentation: Locator; readonly continue: Locator; readonly saveAndContinue: Locator; readonly addressNotKnownReason: Locator; + readonly confirmationCheckbox: Locator; public constructor(page: Page) { this.page = page; this.respondentDetailsHeading = page.getByRole("heading", { name: 'Respondents\' details' }); - this.firstName = page.getByLabel('*First name (Optional)'); - this.lastName = page.getByLabel('*Last name (Optional)'); + this.firstName = page.getByLabel('First name', { exact: true }); + this.lastName = page.getByLabel('Last name', { exact: true }) this.dobDay = page.getByLabel('Day'); this.dobMonth = page.getByLabel('Month'); this.dobYear = page.getByLabel('Year'); - this.gender = page.getByLabel('Gender (Optional)'); - this.currentAddress = page.getByRole('group', { name: '*Current address known?' }); + this.gender = page.getByLabel('What is the respondent\'s gender? (Optional)'); + this.currentAddress = page.getByRole('group', { name: 'Current address known?' }); + this.addressUnknown = page.getByRole('group', { name: 'Why is this address unknown?' }); this.addressNotKnownReason = page.getByLabel('*Reason the address is not known'); + this.giveMoreDetails = page.getByLabel('Give more details'); this.telephone = page.getByRole('group', { name: 'Telephone (Optional)' }).locator('#respondents1_0_party_telephoneNumber_telephoneNumber'); - this.relationToChild = page.getByLabel('*What is the respondent\'s relationship to the child or children in this case? (Optional)'); - this.relationToChildContact = page.getByRole('group', { name: 'Do you need contact details hidden from other parties? (Optional)' }); - this.relationToChildContactReason = page.getByLabel('Give reason (Optional)'); - this.litigationCapacity = page.getByRole('group', { name: 'Do you believe this person will have problems with litigation capacity (understanding what\'s happening in the case)? (Optional)' }); - this.litigationCapacityReason = page.getByLabel('Give details, including assessment outcomes and referrals to health services (Optional)'); - this.legalRepresentation = page.getByRole('group', { name: '*Do they have legal representation? (Optional)' }); + this.relationToChild = page.getByLabel('Which children does the respondent have parental responsibility for and what is their relationship?'); + this.difficultyCapacity = page.getByRole('group', { name: 'Do you believe this person will have difficulty understanding what\'s happening with the case? (Optional)' }); + this.difficultyCapacityReason = page.getByLabel('Give details, including assessment outcomes and referrals to health services (Optional)'); + this.legalRepresentation = page.getByRole('group', { name: 'Do they have legal representation?' }); this.continue = page.getByRole('button', { name: 'Continue' }); this.saveAndContinue = page.getByRole('button', { name: 'Save and continue' }); + this.confirmationCheckbox = page.getByLabel('I confirm that each person'); } async respondentDetailsNeeded() { - await expect(this.respondentDetailsHeading).toBeVisible(); - await this.firstName.click(); - await this.firstName.fill('John'); - await this.lastName.click(); - await this.lastName.fill('Smith'); - await this.dobDay.click(); - await this.dobDay.fill('10'); - await this.dobMonth.click(); - await this.dobMonth.fill('11'); - await this.dobYear.click(); - await this.dobYear.fill('2001'); - await this.gender.click(); //not sure if click needed + await expect.soft(this.respondentDetailsHeading).toBeVisible(); + await this.confirmationCheckbox.check(); + await this.firstName.fill('Tom'); + await this.lastName.fill('Jones'); + await this.dobDay.fill('01'); + await this.dobMonth.fill('01'); + await this.dobYear.fill('1990'); await this.gender.selectOption('1: Male'); + await this.currentAddress.getByLabel('No').click(); await this.currentAddress.getByLabel('No').check(); - await this.addressNotKnownReason.selectOption('2: Person deceased'); - await this.telephone.fill('01234567890'); - await this.relationToChild.click(); - await this.relationToChild.fill('aunt'); - await this.relationToChildContact.getByLabel('Yes').check(); - await this.relationToChildContactReason.click(); - await this.relationToChildContactReason.fill('this is the reason'); - await this.litigationCapacity.getByLabel('Yes').check(); - await this.litigationCapacityReason.click(); - await this.litigationCapacityReason.fill('these are the details'); + await this.addressUnknown.getByLabel('Whereabouts unknown').check(); + await this.giveMoreDetails.fill('Test'); + await this.relationToChild.fill('uncle'); + await this.difficultyCapacity.getByLabel('Yes').check(); + await this.difficultyCapacityReason.fill('test') await this.legalRepresentation.getByLabel('No').check(); await this.continue.click(); await this.saveAndContinue.click(); From e159732c2de4a180575ea4b975d3ba0c50936149 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Fri, 21 Feb 2025 09:13:34 +0000 Subject: [PATCH 21/47] Remove metadata controller, use migration instead --- .../CaseEvent/CareSupervision/MultiState.json | 8 +-- ccd-definition/CaseType.json | 3 +- .../controllers/MetadataControllerTest.java | 69 ------------------- .../controllers/CaseInitiationController.java | 3 + .../fpl/controllers/MetadataController.java | 42 ----------- .../support/MigrateCaseController.java | 16 +++++ 6 files changed, 24 insertions(+), 117 deletions(-) delete mode 100644 service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java delete mode 100644 service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java diff --git a/ccd-definition/CaseEvent/CareSupervision/MultiState.json b/ccd-definition/CaseEvent/CareSupervision/MultiState.json index 10914a73b63..8534ee3ffcd 100644 --- a/ccd-definition/CaseEvent/CareSupervision/MultiState.json +++ b/ccd-definition/CaseEvent/CareSupervision/MultiState.json @@ -341,7 +341,7 @@ "CallBackURLAboutToStartEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-start", "CallBackURLAboutToSubmitEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-submit", "CallBackURLSubmittedEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/update-task-list/submitted", - "EventEnablingCondition": "[INJECTED_DATA.HAS_3RD_PARTY] = \"No\"", + "EventEnablingCondition": "(representativeType != \"RESPONDENT_SOLICITOR\" AND representativeType != \"CHILD_SOLICITOR\") OR hasRespondentLA = \"NO\"", "ShowSummary": "Y", "ShowEventNotes": "N", "EndButtonLabel": "Save and continue" @@ -359,7 +359,7 @@ "CallBackURLAboutToStartEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-start", "CallBackURLAboutToSubmitEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-submit", "CallBackURLSubmittedEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/update-task-list/submitted", - "EventEnablingCondition": "[INJECTED_DATA.HAS_3RD_PARTY] = \"Yes\"", + "EventEnablingCondition": "hasRespondentLA = \"YES\"", "ShowSummary": "Y", "ShowEventNotes": "N", "EndButtonLabel": "Save and continue" @@ -683,7 +683,7 @@ "ShowSummary": "Y", "ShowEventNotes": "Y", "EndButtonLabel": "Save and continue", - "EventEnablingCondition": "[INJECTED_DATA.HAS_3RD_PARTY] = \"No\"", + "EventEnablingCondition": "(representativeType != \"RESPONDENT_SOLICITOR\" AND representativeType != \"CHILD_SOLICITOR\") OR hasRespondentLA = \"NO\"", "Comment": "Can be removed when respondent journey toggled on (replace with enterRespondents)" }, { @@ -702,7 +702,7 @@ "ShowSummary": "Y", "ShowEventNotes": "Y", "EndButtonLabel": "Save and continue", - "EventEnablingCondition": "[INJECTED_DATA.HAS_3RD_PARTY] = \"Yes\"", + "EventEnablingCondition": "hasRespondentLA = \"YES\"", "Comment": "Can be removed when respondent journey toggled on (replace with enterRespondents)" }, { diff --git a/ccd-definition/CaseType.json b/ccd-definition/CaseType.json index a832c1ee40b..8817e873d4f 100644 --- a/ccd-definition/CaseType.json +++ b/ccd-definition/CaseType.json @@ -5,8 +5,7 @@ "Name": "Public Law Applications", "Description": "Public Law Applications", "JurisdictionID": "PUBLICLAW", - "SecurityClassification": "Public", - "CallbackGetCaseUrl": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/getCase/metadata" + "SecurityClassification": "Public" }, { "LiveFrom": "01/01/2017", diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java deleted file mode 100644 index 9faca1b74b6..00000000000 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/MetadataControllerTest.java +++ /dev/null @@ -1,69 +0,0 @@ -package uk.gov.hmcts.reform.fpl.controllers; - -import com.fasterxml.jackson.core.type.TypeReference; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; -import uk.gov.hmcts.reform.fpl.model.CaseData; -import uk.gov.hmcts.reform.fpl.model.CaseViewField; -import uk.gov.hmcts.reform.fpl.model.RespondentLocalAuthority; - -import java.util.List; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; - -@WebMvcTest(MetadataController.class) -@OverrideAutoConfiguration(enabled = true) -public class MetadataControllerTest extends AbstractCallbackTest { - - protected MetadataControllerTest() { - super("getCase"); - } - - @Test - void shouldReturn3rdPartyFlagIfYes() { - CaseData caseData = CaseData.builder() - .respondentLocalAuthority(RespondentLocalAuthority.builder() - .name("Swansea County Council") - .build()) - .build(); - CallbackRequest cb = toCallBackRequest(caseData, caseData); - - Map response = postMetadataCallback("/callback/getCase/metadata", cb); - - List metadataFields = mapper.convertValue( - response.get("metadataFields"), new TypeReference<>() {}); - - assertThat(metadataFields) - .contains(CaseViewField.builder() - .id("[INJECTED_DATA.HAS_3RD_PARTY]") - .label("Has a respondent local authority been added to the case?") - .value("Yes") - .fieldType(CaseViewField.FieldType.TEXT) - .build()); - } - - @Test - void shouldReturn3rdPartyFlagIfNo() { - CaseData caseData = CaseData.builder() - .respondentLocalAuthority(null) - .build(); - CallbackRequest cb = toCallBackRequest(caseData, caseData); - - Map response = postMetadataCallback("/callback/getCase/metadata", cb); - - List metadataFields = mapper.convertValue( - response.get("metadataFields"), new TypeReference<>() {}); - - assertThat(metadataFields) - .contains(CaseViewField.builder() - .id("[INJECTED_DATA.HAS_3RD_PARTY]") - .label("Has a respondent local authority been added to the case?") - .value("No") - .fieldType(CaseViewField.FieldType.TEXT) - .build()); - } - -} diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/CaseInitiationController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/CaseInitiationController.java index 84143d5b5ea..e0191fc6299 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/CaseInitiationController.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/CaseInitiationController.java @@ -129,6 +129,9 @@ public AboutToStartOrSubmitCallbackResponse handleAboutToSubmit(@RequestBody Cal // if we're a 3rd party app, prepopulate the respondentLocalAuthority field caseDetails.putIfNotEmpty("respondentLocalAuthority", caseInitiationService.getRespondentLocalAuthorityDetails(caseData)); + caseDetails.putIfNotEmpty("hasRespondentLA", YesNo.YES); + } else { + caseDetails.putIfNotEmpty("hasRespondentLA", YesNo.NO); } caseDetails.removeAll("outsourcingType", "outsourcingLAs", "sharingWithUsers", "isOutsourcedCase"); diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java deleted file mode 100644 index 10b289cbbac..00000000000 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/MetadataController.java +++ /dev/null @@ -1,42 +0,0 @@ -package uk.gov.hmcts.reform.fpl.controllers; - - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; -import uk.gov.hmcts.reform.fpl.model.CaseData; -import uk.gov.hmcts.reform.fpl.model.CaseViewField; - -import java.util.List; -import java.util.Map; - -import static org.apache.commons.lang3.ObjectUtils.isEmpty; - - -@Slf4j -@RestController -@RequestMapping("/callback/getCase") -@RequiredArgsConstructor(onConstructor_ = {@Autowired}) -public class MetadataController extends CallbackController { - - @PostMapping("/metadata") - public Map getMetaData(@RequestBody CallbackRequest request) { - CaseData caseData = getCaseData(request); - - return Map.of("metadataFields", List.of( - CaseViewField.builder() - .id("[INJECTED_DATA.HAS_3RD_PARTY]") - .label("Has a respondent local authority been added to the case?") - .value(isEmpty(caseData.getRespondentLocalAuthority()) ? "No" : "Yes") - .fieldType(CaseViewField.FieldType.TEXT) - .build() - )); - } - -} - diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java index 20c791a84eb..4ac61de61de 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java @@ -11,6 +11,9 @@ import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; import uk.gov.hmcts.reform.fpl.controllers.CallbackController; +import uk.gov.hmcts.reform.fpl.enums.RepresentativeType; +import uk.gov.hmcts.reform.fpl.enums.YesNo; +import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.service.CaseConverter; import uk.gov.hmcts.reform.fpl.service.JudicialService; import uk.gov.hmcts.reform.fpl.service.MigrateCaseService; @@ -33,6 +36,7 @@ public class MigrateCaseController extends CallbackController { private final Map> migrations = Map.of( "DFPL-log", this::runLog, + "DFPL-2360", this::run2360, "DFPL-2572", this::run2572, "DFPL-2635", this::run2635, "DFPL-2642", this::run2642, @@ -99,4 +103,16 @@ private void run2638(CaseDetails caseDetails) { caseDetails.getData().putAll(migrateCaseService.updateOutsourcingPolicy(getCaseData(caseDetails), orgId, null)); } + + private void run2360(CaseDetails caseDetails) { + final String migrationId = "DFPL-2360"; + CaseData caseData = getCaseData(caseDetails); + if (!RepresentativeType.LOCAL_AUTHORITY.equals(caseData.getRepresentativeType())) { + caseDetails.getData().put("hasRespondentLA", YesNo.NO); + } else { + log.info("Migration {id = {}, case reference = {}}, " + + "skipping case as has representativeType=LOCAL_AUTHORITY", + migrationId, caseData.getId()); + } + } } From af6afede6704a49b62ff3585b1ff6e339effa920 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 5 Mar 2025 15:09:13 +0000 Subject: [PATCH 22/47] add mock to test added after code was written --- .../fpl/controllers/RespondentControllerAboutToStartTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java index c72dda99595..8e77652489f 100644 --- a/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java +++ b/service/src/integrationTest/java/uk/gov/hmcts/reform/fpl/controllers/RespondentControllerAboutToStartTest.java @@ -54,6 +54,8 @@ void aboutToStartShouldPrePopulateRespondent() { @Test void shouldPopulateRespondentLA() { + when(representativeService.shouldUserHaveAccessToRespondentsChildrenEvent(any())).thenReturn(true); + CaseData caseData = CaseData.builder() .representativeType(RepresentativeType.RESPONDENT_SOLICITOR) .respondentLocalAuthority(RespondentLocalAuthority.builder().build()) From c579b162e2b49a4f4e4f3f9f602bc587476fe82a Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 5 Mar 2025 15:50:49 +0000 Subject: [PATCH 23/47] add field definitions --- .../CareSupervision/court-admin.json | 7 +++++++ .../CareSupervision/judiciary.json | 7 +++++++ .../CareSupervision/solicitor.json | 7 +++++++ .../CareSupervision/system-update.json | 7 +++++++ ccd-definition/CaseField/CareSupervision/caseField.json | 9 +++++++++ 5 files changed, 37 insertions(+) diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json b/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json index 414c0edd052..b2f173ad467 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json @@ -6,6 +6,13 @@ "UserRole": "caseworker-publiclaw-courtadmin", "CRUD": "CRUD" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "hasRespondentLA", + "UserRole": "caseworker-publiclaw-courtadmin", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/judiciary.json b/ccd-definition/AuthorisationCaseField/CareSupervision/judiciary.json index 29e97424e85..1276a829aa8 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/judiciary.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/judiciary.json @@ -6,6 +6,13 @@ "UserRole": "caseworker-publiclaw-judiciary", "CRUD": "CRUD" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "hasRespondentLA", + "UserRole": "caseworker-publiclaw-judiciary", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json b/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json index cea0667b7f9..ce308f2e8a7 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/solicitor.json @@ -6,6 +6,13 @@ "UserRole": "caseworker-publiclaw-solicitor", "CRUD": "R" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "hasRespondentLA", + "UserRole": "caseworker-publiclaw-solicitor", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/system-update.json b/ccd-definition/AuthorisationCaseField/CareSupervision/system-update.json index 49689578e56..5fe27f4b27a 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/system-update.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/system-update.json @@ -6,6 +6,13 @@ "UserRole": "caseworker-publiclaw-systemupdate", "CRUD": "CRUD" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "hasRespondentLA", + "UserRole": "caseworker-publiclaw-systemupdate", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/CaseField/CareSupervision/caseField.json b/ccd-definition/CaseField/CareSupervision/caseField.json index 7a5d182a52a..ab6dad09d01 100644 --- a/ccd-definition/CaseField/CareSupervision/caseField.json +++ b/ccd-definition/CaseField/CareSupervision/caseField.json @@ -2747,5 +2747,14 @@ "FieldType": "TTL", "SecurityClassification": "Public", "Searchable": "N" + }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "ID": "hasRespondentLA", + "Label": "The case has a respondent LA", + "FieldType": "YesOrNo", + "SecurityClassification": "Public", + "Searchable": "N" } ] From f36552b781dd334f431c4df731985efc46f3f71c Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Mon, 10 Mar 2025 11:52:40 +0000 Subject: [PATCH 24/47] DFPL-5831 --- playwright-e2e/pages/respondent-details.ts | 42 +++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/playwright-e2e/pages/respondent-details.ts b/playwright-e2e/pages/respondent-details.ts index 3bf90deb725..2cd8aa1ffa0 100644 --- a/playwright-e2e/pages/respondent-details.ts +++ b/playwright-e2e/pages/respondent-details.ts @@ -1,19 +1,31 @@ -import { type Page, type Locator, expect } from "@playwright/test"; +import { type Page, type Locator, expect } from "@playwright/test" export class RespondentDetails { readonly page: Page; readonly respondentDetailsHeading: Locator; readonly firstName: Locator; + readonly respondentFirstName: Locator; readonly lastName: Locator; + readonly respondentLastName: Locator; readonly dobDay: Locator; + readonly respondentdobDay: Locator; + readonly respondentdobMonth: Locator; + readonly respondentdobYear: Locator; readonly dobMonth: Locator; readonly dobYear: Locator; readonly gender: Locator; + readonly respondent2Gender: Locator; + readonly respondent2CurrentAddressKnown: Locator; + readonly respondent2AddressUnknown: Locator; + readonly respondet2RelationshipToChild: Locator; readonly currentAddress: Locator; readonly addressUnknown: Locator; readonly giveMoreDetails: Locator; readonly telephone: Locator; + readonly respondent2DifficultyUnderstandingCapacity: Locator; + readonly respondent2DificultyCapacityReason: Locator; + readonly respondent2HiddenNumber: Locator; readonly relationToChild: Locator; readonly difficultyCapacity: Locator; readonly difficultyCapacityReason: Locator; @@ -22,6 +34,7 @@ export class RespondentDetails { readonly saveAndContinue: Locator; readonly addressNotKnownReason: Locator; readonly confirmationCheckbox: Locator; + readonly addNew: Locator; public constructor(page: Page) { this.page = page; @@ -41,9 +54,22 @@ export class RespondentDetails { this.difficultyCapacity = page.getByRole('group', { name: 'Do you believe this person will have difficulty understanding what\'s happening with the case? (Optional)' }); this.difficultyCapacityReason = page.getByLabel('Give details, including assessment outcomes and referrals to health services (Optional)'); this.legalRepresentation = page.getByRole('group', { name: 'Do they have legal representation?' }); + this.addNew = page.getByRole('button', { name: 'Add new' }).nth(1); this.continue = page.getByRole('button', { name: 'Continue' }); this.saveAndContinue = page.getByRole('button', { name: 'Save and continue' }); this.confirmationCheckbox = page.getByLabel('I confirm that each person'); + this.respondentFirstName = page.locator('#respondents1_1_party_firstName'); + this.respondentLastName = page.locator('#respondents1_1_party_lastName'); + this.respondentdobDay = page.locator('#respondents1_1_party_party #dateOfBirth-day'); + this.respondentdobMonth = page.locator('#respondents1_1_party_party #dateOfBirth-month'); + this.respondentdobYear = page.locator('#respondents1_1_party_party #dateOfBirth-year'); + this.respondent2Gender = page.locator('#respondents1_1_party_gender'); + this.respondent2CurrentAddressKnown = page.locator('#respondents1_1_party_addressKnow-No'); + this.respondent2AddressUnknown = page.locator('[id="respondents1_1_party_addressNotKnowReason-No\\ fixed\\ abode"]'); + this.respondent2HiddenNumber = page.locator('#respondents1_1_party_hideTelephone_No'); + this.respondet2RelationshipToChild = page.locator('#respondents1_1_party_relationshipToChild'); + this.respondent2DifficultyUnderstandingCapacity = page.locator('#respondents1_1_party_litigationIssues-NO'); + this.respondent2DificultyCapacityReason = page.locator('#respondents1_1_legalRepresentation_No') } async respondentDetailsNeeded() { @@ -63,6 +89,20 @@ export class RespondentDetails { await this.difficultyCapacity.getByLabel('Yes').check(); await this.difficultyCapacityReason.fill('test') await this.legalRepresentation.getByLabel('No').check(); + await this.addNew.click(); + await this.respondentFirstName.fill('Thierry'); + await this.respondentLastName.fill('Jordan'); + await this.respondentdobDay.fill('31'); + await this.respondentdobMonth.fill('03'); + await this.respondentdobYear.fill('1980'); + await this.respondent2Gender.selectOption('1: Male'); + await this.respondent2CurrentAddressKnown.click(); + await this.respondent2AddressUnknown.click(); + await this.respondent2HiddenNumber.click(); + await this.respondet2RelationshipToChild.fill('uncle'); + await this.respondent2DifficultyUnderstandingCapacity.click(); + await this.respondent2DificultyCapacityReason.click(); + //await this.page.waitForTimeout(1000); await this.continue.click(); await this.saveAndContinue.click(); } From e682edfc0ed56fea6d8fae58e2d916bf1333ad09 Mon Sep 17 00:00:00 2001 From: GauravChawlaMOJ Date: Mon, 10 Mar 2025 16:01:17 +0000 Subject: [PATCH 25/47] changes --- playwright-e2e/pages/respondent-details.ts | 27 +++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/playwright-e2e/pages/respondent-details.ts b/playwright-e2e/pages/respondent-details.ts index 2cd8aa1ffa0..07fdc5b5220 100644 --- a/playwright-e2e/pages/respondent-details.ts +++ b/playwright-e2e/pages/respondent-details.ts @@ -32,26 +32,24 @@ export class RespondentDetails { readonly legalRepresentation: Locator; readonly continue: Locator; readonly saveAndContinue: Locator; - readonly addressNotKnownReason: Locator; readonly confirmationCheckbox: Locator; readonly addNew: Locator; public constructor(page: Page) { this.page = page; this.respondentDetailsHeading = page.getByRole("heading", { name: 'Respondents\' details' }); - this.firstName = page.getByLabel('First name', { exact: true }); - this.lastName = page.getByLabel('Last name', { exact: true }) + this.firstName = page.getByLabel('*First name (Optional)', { exact: true }); + this.lastName = page.getByLabel('*Last name (Optional)', { exact: true }) this.dobDay = page.getByLabel('Day'); this.dobMonth = page.getByLabel('Month'); this.dobYear = page.getByLabel('Year'); - this.gender = page.getByLabel('What is the respondent\'s gender? (Optional)'); - this.currentAddress = page.getByRole('group', { name: 'Current address known?' }); - this.addressUnknown = page.getByRole('group', { name: 'Why is this address unknown?' }); - this.addressNotKnownReason = page.getByLabel('*Reason the address is not known'); + this.gender = page.getByLabel('Gender (Optional)'); + this.currentAddress = page.getByRole('group', { name: '*Current address known?' }); + this.addressUnknown = page.getByLabel('*Reason the address is not'); this.giveMoreDetails = page.getByLabel('Give more details'); this.telephone = page.getByRole('group', { name: 'Telephone (Optional)' }).locator('#respondents1_0_party_telephoneNumber_telephoneNumber'); - this.relationToChild = page.getByLabel('Which children does the respondent have parental responsibility for and what is their relationship?'); - this.difficultyCapacity = page.getByRole('group', { name: 'Do you believe this person will have difficulty understanding what\'s happening with the case? (Optional)' }); + this.relationToChild = page.getByLabel('*What is the respondent\'s relationship to the child or children in this case? (Optional)'); + this.difficultyCapacity = page.getByLabel('Do you believe this person will have problems with litigation capacity (understanding what\'s happening in the case)? (Optional)' ); this.difficultyCapacityReason = page.getByLabel('Give details, including assessment outcomes and referrals to health services (Optional)'); this.legalRepresentation = page.getByRole('group', { name: 'Do they have legal representation?' }); this.addNew = page.getByRole('button', { name: 'Add new' }).nth(1); @@ -74,17 +72,18 @@ export class RespondentDetails { async respondentDetailsNeeded() { await expect.soft(this.respondentDetailsHeading).toBeVisible(); - await this.confirmationCheckbox.check(); + //await this.confirmationCheckbox.check(); await this.firstName.fill('Tom'); await this.lastName.fill('Jones'); await this.dobDay.fill('01'); await this.dobMonth.fill('01'); await this.dobYear.fill('1990'); await this.gender.selectOption('1: Male'); - await this.currentAddress.getByLabel('No').click(); - await this.currentAddress.getByLabel('No').check(); - await this.addressUnknown.getByLabel('Whereabouts unknown').check(); - await this.giveMoreDetails.fill('Test'); + //await this.page.getByRole('group', { name: '*Current address known?' }).getByLabel('No').check(); + //await this.currentAddress.getByLabel('No').check(); + // await this.currentAddress.getByLabel('No').click({force: true}); + await this.addressUnknown.selectOption('1: No fixed abode'); + // await this.giveMoreDetails.fill('Test'); await this.relationToChild.fill('uncle'); await this.difficultyCapacity.getByLabel('Yes').check(); await this.difficultyCapacityReason.fill('test') From 0dcc2d60ca42d6bce25cadce64005d71b79ff336 Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Wed, 12 Mar 2025 10:08:29 +0000 Subject: [PATCH 26/47] DFPL-2360 --- playwright-e2e/pages/respondent-details.ts | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/playwright-e2e/pages/respondent-details.ts b/playwright-e2e/pages/respondent-details.ts index 07fdc5b5220..d039e2fa235 100644 --- a/playwright-e2e/pages/respondent-details.ts +++ b/playwright-e2e/pages/respondent-details.ts @@ -38,19 +38,19 @@ export class RespondentDetails { public constructor(page: Page) { this.page = page; this.respondentDetailsHeading = page.getByRole("heading", { name: 'Respondents\' details' }); - this.firstName = page.getByLabel('*First name (Optional)', { exact: true }); - this.lastName = page.getByLabel('*Last name (Optional)', { exact: true }) + this.firstName = page.getByLabel('First name', { exact: true }); + this.lastName = page.getByLabel('Last name', { exact: true }); this.dobDay = page.getByLabel('Day'); this.dobMonth = page.getByLabel('Month'); this.dobYear = page.getByLabel('Year'); - this.gender = page.getByLabel('Gender (Optional)'); - this.currentAddress = page.getByRole('group', { name: '*Current address known?' }); - this.addressUnknown = page.getByLabel('*Reason the address is not'); + this.gender = page.getByLabel('What is the respondent\'s gender? (Optional)'); + this.currentAddress = page.getByRole('group', { name: 'Current address known?' }); + this.addressUnknown = page.getByRole('group', { name: 'Why is this address unknown?' }); this.giveMoreDetails = page.getByLabel('Give more details'); this.telephone = page.getByRole('group', { name: 'Telephone (Optional)' }).locator('#respondents1_0_party_telephoneNumber_telephoneNumber'); - this.relationToChild = page.getByLabel('*What is the respondent\'s relationship to the child or children in this case? (Optional)'); - this.difficultyCapacity = page.getByLabel('Do you believe this person will have problems with litigation capacity (understanding what\'s happening in the case)? (Optional)' ); + this.difficultyCapacity = page.getByRole('group', { name: 'Do you believe this person will have difficulty understanding what\'s happening with the case? (Optional)' }); this.difficultyCapacityReason = page.getByLabel('Give details, including assessment outcomes and referrals to health services (Optional)'); + this.relationToChild = page.getByLabel('Which children does the respondent have parental responsibility for and what is their relationship?'); this.legalRepresentation = page.getByRole('group', { name: 'Do they have legal representation?' }); this.addNew = page.getByRole('button', { name: 'Add new' }).nth(1); this.continue = page.getByRole('button', { name: 'Continue' }); @@ -72,18 +72,17 @@ export class RespondentDetails { async respondentDetailsNeeded() { await expect.soft(this.respondentDetailsHeading).toBeVisible(); - //await this.confirmationCheckbox.check(); + await this.confirmationCheckbox.check(); await this.firstName.fill('Tom'); await this.lastName.fill('Jones'); - await this.dobDay.fill('01'); - await this.dobMonth.fill('01'); - await this.dobYear.fill('1990'); + await this.dobDay.fill('31'); + await this.dobMonth.fill('3'); + await this.dobYear.fill('1980'); await this.gender.selectOption('1: Male'); - //await this.page.getByRole('group', { name: '*Current address known?' }).getByLabel('No').check(); - //await this.currentAddress.getByLabel('No').check(); - // await this.currentAddress.getByLabel('No').click({force: true}); - await this.addressUnknown.selectOption('1: No fixed abode'); - // await this.giveMoreDetails.fill('Test'); + await this.currentAddress.getByLabel('No').click(); + await this.currentAddress.getByLabel('No').click(); + await this.addressUnknown.getByLabel('Whereabouts unknown').click(); + await this.giveMoreDetails.fill('Test'); await this.relationToChild.fill('uncle'); await this.difficultyCapacity.getByLabel('Yes').check(); await this.difficultyCapacityReason.fill('test') @@ -96,12 +95,13 @@ export class RespondentDetails { await this.respondentdobYear.fill('1980'); await this.respondent2Gender.selectOption('1: Male'); await this.respondent2CurrentAddressKnown.click(); + await this.respondent2CurrentAddressKnown.click(); await this.respondent2AddressUnknown.click(); await this.respondent2HiddenNumber.click(); await this.respondet2RelationshipToChild.fill('uncle'); await this.respondent2DifficultyUnderstandingCapacity.click(); await this.respondent2DificultyCapacityReason.click(); - //await this.page.waitForTimeout(1000); + await this.page.waitForTimeout(1000); await this.continue.click(); await this.saveAndContinue.click(); } From 7df570687fc94a8e16ad4eda8543995d564eee63 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Wed, 9 Apr 2025 14:21:58 +0100 Subject: [PATCH 27/47] fix reference to new casedata, should be old --- .../java/uk/gov/hmcts/reform/fpl/service/RespondentService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java index be26380ecc7..26aacdb4a59 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/service/RespondentService.java @@ -303,7 +303,7 @@ public void transformRespondentLocalAuthority(CaseDetails caseDetails, CaseData List> respondents = caseData.getAllRespondents(); // get the current respondentLA stored in collection, if not use a new blank respondent as the base - Element oldFakeRespondentLA = isEmpty(caseData.getAllRespondents()) + Element oldFakeRespondentLA = isEmpty(caseDataBefore.getAllRespondents()) ? element(DUMMY_UUID, Respondent.builder().build()) : caseDataBefore.getAllRespondents().get(0); From b3174bb8f00bc071f9c55fb80a99a02418d4623a Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Mon, 14 Apr 2025 10:16:03 +0100 Subject: [PATCH 28/47] DFPL-2360 Update private solicitor events --- playwright-e2e/pages/respondent-details.ts | 98 ++++++++- playwright-e2e/tests/smoke-test.spec.ts | 227 ++++++++++----------- 2 files changed, 202 insertions(+), 123 deletions(-) diff --git a/playwright-e2e/pages/respondent-details.ts b/playwright-e2e/pages/respondent-details.ts index 5c1e1103298..7b982adb1d8 100644 --- a/playwright-e2e/pages/respondent-details.ts +++ b/playwright-e2e/pages/respondent-details.ts @@ -1,17 +1,20 @@ import { type Page, type Locator, expect } from "@playwright/test" +import { BasePage } from "./base-page"; -export class RespondentDetails { +export class RespondentDetails extends BasePage { - readonly page: Page; readonly respondentDetailsHeading: Locator; readonly firstName: Locator; - readonly respondentFirstName: Locator; readonly lastName: Locator; + readonly lawyerFirstName: Locator; + readonly lawyerLastName: Locator; + readonly authorityOutsourcing: Locator; + readonly respondentFirstName: Locator; readonly respondentLastName: Locator; - readonly dobDay: Locator; readonly respondentdobDay: Locator; readonly respondentdobMonth: Locator; readonly respondentdobYear: Locator; + readonly dobDay: Locator; readonly dobMonth: Locator; readonly dobYear: Locator; readonly gender: Locator; @@ -34,10 +37,20 @@ export class RespondentDetails { readonly saveAndContinue: Locator; readonly confirmationCheckbox: Locator; readonly addNew: Locator; + readonly nextStep: Locator; + readonly go: Locator; + readonly phoneNumber: Locator; + readonly telephoneNumber: Locator; + readonly numberConfidential: Locator; + readonly parentalResponsibility: Locator; + readonly legalRepresentative: Locator; public constructor(page: Page) { - this.page = page; + super(page); this.respondentDetailsHeading = page.getByRole("heading", { name: 'Respondents\' details' }); + this.lawyerFirstName = page.getByLabel('Lawyer first name'); + this.lawyerLastName = page.getByLabel('Lawyer last name'); + this.authorityOutsourcing = page.getByRole('group', { name: 'Is this Local Authority' }); this.firstName = page.getByLabel('First name', { exact: true }); this.lastName = page.getByLabel('Last name', { exact: true }); this.dobDay = page.getByLabel('Day'); @@ -52,7 +65,8 @@ export class RespondentDetails { this.difficultyCapacityReason = page.getByLabel('Give details, including assessment outcomes and referrals to health services (Optional)'); this.relationToChild = page.getByLabel('Which children does the respondent have parental responsibility for and what is their relationship?'); this.legalRepresentation = page.getByRole('group', { name: 'Do they have legal representation?' }); - this.addNew = page.getByRole('button', { name: 'Add new' }).nth(1); + this.addNew = page.getByRole('button', { name: 'Add new' }); + this.addNew = page.getByRole('button', { name: 'Add new' }).nth(1) this.continue = page.getByRole('button', { name: 'Continue' }); this.saveAndContinue = page.getByRole('button', { name: 'Save and continue' }); this.confirmationCheckbox = page.getByLabel('I confirm that each person'); @@ -67,7 +81,15 @@ export class RespondentDetails { this.respondent2HiddenNumber = page.locator('#respondents1_1_party_hideTelephone_No'); this.respondet2RelationshipToChild = page.locator('#respondents1_1_party_relationshipToChild'); this.respondent2DifficultyUnderstandingCapacity = page.locator('#respondents1_1_party_litigationIssues-NO'); - this.respondent2DificultyCapacityReason = page.locator('#respondents1_1_legalRepresentation_No') + this.respondent2DificultyCapacityReason = page.locator('#respondents1_1_legalRepresentation_No'); + this.nextStep = page.getByLabel('Next step'); + this.go = page.getByRole('button', { name: 'Go' }); + this.phoneNumber = page.getByLabel('Phone number'); + this.telephoneNumber = page.getByLabel('Telephone number (Optional)'); + this.numberConfidential = page.getByRole('group', { name: 'Do you need to keep the' }); + this.parentalResponsibility = page.getByLabel('Which children does the'); + this.legalRepresentative = page.getByRole('group', { name: 'Do they have legal' }).getByLabel('No'); + } async respondentDetailsNeeded() { @@ -82,12 +104,13 @@ export class RespondentDetails { await this.currentAddress.getByLabel('No').click(); await this.currentAddress.getByLabel('No').click(); await this.addressUnknown.getByLabel('Whereabouts unknown').click(); + await this.addressUnknown.getByLabel('Whereabouts unknown').click(); await this.giveMoreDetails.fill('Test'); await this.relationToChild.fill('uncle'); await this.difficultyCapacity.getByLabel('Yes').check(); await this.difficultyCapacityReason.fill('test') await this.legalRepresentation.getByLabel('No').check(); - await this.addNew.click(); + await this.addNew.nth(1).click(); await this.respondentFirstName.fill('Thierry'); await this.respondentLastName.fill('Jordan'); await this.respondentdobDay.fill('31'); @@ -104,6 +127,63 @@ export class RespondentDetails { await this.page.waitForTimeout(1000); await this.continue.click(); await this.saveAndContinue.click(); - await expect(this.page.getByText('has been updated with event:')).toBeVisible(); + } + + async respondentDetailsPrivateSolicitor() { + await expect.soft(this.respondentDetailsHeading).toBeVisible(); + await this.lawyerFirstName.fill('Tommy'); + await this.lawyerLastName.fill('Lee'); + await this.enterPostCode('sk3 8pp'); + await this.authorityOutsourcing.getByLabel('No').check(); + await this.confirmationCheckbox.check(); + await this.phoneNumber.fill('07818213678'); + await this.firstName.fill('Dianah'); + await this.lastName.fill('Asa'); + await this.dobDay.fill('11'); + await this.dobMonth.fill('10'); + await this.dobYear.fill('1998'); + await this.gender.selectOption('1: Male'); + await this.currentAddress.getByLabel('No').click(); + await this.currentAddress.getByLabel('No').click(); + await this.addressUnknown.getByLabel('Whereabouts unknown').click(); + await this.addressUnknown.getByLabel('Whereabouts unknown').click(); + await this.giveMoreDetails.fill('Test'); + await this.relationToChild.fill('uncle'); + await this.difficultyCapacity.getByLabel('No', { exact: true }).check(); + await this.legalRepresentation.getByLabel('No').check(); + // await this.addNew.nth(1).check(); + // await this.addNew.check(); + await this.addNew.click(); + // await this.addNew.locator('input[type="radio"]').check() + // await this.firstName.locator('#respondents1_1_party_firstName').fill('Thierry'); + // await this.lastName.locator('#respondents1_1_party_lastName').fill('Jones'); + // await this.respondentdobDay.locator('#respondents1_1_party_party #dateOfBirth-day').fill('2'); + // await this.respondentdobMonth.locator('#respondents1_1_party_party #dateOfBirth-month').fill('5'); + // await this.respondentdobYear.locator('#respondents1_1_party_party #dateOfBirth-year').fill('1999'); + // await this.respondent2Gender.locator('#respondents1_1_party_gender').selectOption('2: Female'); + // await this.respondent2CurrentAddressKnown.locator('#respondents1_1_party_addressKnow-No').click(); + // await this.respondent2AddressUnknown.locator('[id="respondents1_1_party_addressNotKnowReason-Whereabouts\\ unknown"]').click(); + // await this.giveMoreDetails.getByRole('textbox', { name: 'Give more details' }).fill('Test'); + // await this.telephoneNumber.locator('#respondents1_1_party_telephoneNumber_telephoneNumber').fill('00000000'); + // await this.respondent2HiddenNumber.locator('#respondents1_1_party_hideTelephone_No').check(); + // await this.respondet2RelationshipToChild.locator('#respondents1_1_party_relationshipToChild').fill('Uncle'); + // await this.respondent2DifficultyUnderstandingCapacity.locator('#respondents1_1_party_litigationIssues-NO').check(); + // await this.respondent2DificultyCapacityReason.locator('#respondents1_1_legalRepresentation_No').check(); + await this.respondentFirstName.fill('Moniks'); + await this.respondentLastName.fill('Yaks'); + await this.respondentdobDay.fill('31'); + await this.respondentdobMonth.fill('03'); + await this.respondentdobYear.fill('1988'); + await this.respondent2Gender.selectOption('1: Male'); + await this.respondent2CurrentAddressKnown.click(); + await this.respondent2CurrentAddressKnown.click(); + await this.respondent2AddressUnknown.click(); + await this.respondent2HiddenNumber.click(); + await this.respondet2RelationshipToChild.fill('uncle'); + await this.respondent2DifficultyUnderstandingCapacity.click(); + await this.respondent2DificultyCapacityReason.click(); + await this.page.waitForTimeout(1000); + await this.continue.click(); + await this.saveAndContinue.click(); } } diff --git a/playwright-e2e/tests/smoke-test.spec.ts b/playwright-e2e/tests/smoke-test.spec.ts index 72ca52a0657..ac69256c62a 100644 --- a/playwright-e2e/tests/smoke-test.spec.ts +++ b/playwright-e2e/tests/smoke-test.spec.ts @@ -1,26 +1,26 @@ -import {expect, test} from "../fixtures/fixtures"; -import {newSwanseaLocalAuthorityUserOne, privateSolicitorOrgUser} from "../settings/user-credentials"; -import {CreateCaseName} from "../utils/create-case-name"; -import {CaseFileView} from "../pages/case-file-view"; +import { expect, test } from "../fixtures/fixtures"; +import { newSwanseaLocalAuthorityUserOne, privateSolicitorOrgUser } from "../settings/user-credentials"; +import { CreateCaseName } from "../utils/create-case-name"; +import { CaseFileView } from "../pages/case-file-view"; test.describe('', () => { test.slow(); test("Local Authority submit C110A application @smoke-test @accessibility", async ({ - signInPage, - createCase, - ordersAndDirectionSought, - startApplication, - hearingUrgency, - groundsForTheApplication, - applicantDetails, - allocationProposal, - addApplicationDocuments, - childDetails, - respondentDetails, - submitCase, - page, - makeAxeBuilder - }, testInfo) => { + signInPage, + createCase, + ordersAndDirectionSought, + startApplication, + hearingUrgency, + groundsForTheApplication, + applicantDetails, + allocationProposal, + addApplicationDocuments, + childDetails, + respondentDetails, + submitCase, + page, + makeAxeBuilder + }, testInfo) => { // Marking this test slow to increase the time for 3 times of other test // 1. Sign in as local-authority user @@ -42,59 +42,58 @@ test.describe('', () => { //await createCase.checkCaseIsCreated(createCase.generatedCaseName); // Orders and directions sought - await startApplication.tabNavigation('Start application'); - await ordersAndDirectionSought.ordersAndDirectionsNeeded(); - await startApplication.addApplicationDetailsHeading.isVisible(); - await startApplication.tabNavigation('View application'); - - // Hearing urgency - await startApplication.tabNavigation('Start application'); - await startApplication.hearingUrgency(); - await expect(hearingUrgency.hearingUrgencyHeading).toBeVisible(); - await hearingUrgency.hearingUrgencySmokeTest(); - await startApplication.tabNavigation('View application'); + // await startApplication.tabNavigation('Start application'); + // await ordersAndDirectionSought.ordersAndDirectionsNeeded(); + // await startApplication.addApplicationDetailsHeading.isVisible(); + // await startApplication.tabNavigation('View application'); + + // // Hearing urgency + // await startApplication.tabNavigation('Start application'); + // await startApplication.hearingUrgency(); + // await expect(hearingUrgency.hearingUrgencyHeading).toBeVisible(); + // await hearingUrgency.hearingUrgencySmokeTest(); + // await startApplication.tabNavigation('View application'); // Grounds for the application - await startApplication.tabNavigation('Start application'); - await startApplication.groundsForTheApplication(); - await groundsForTheApplication.groundsForTheApplicationSmokeTest(); - await startApplication.groundsForTheApplicationHasBeenUpdated(); - await startApplication.tabNavigation('View application'); + // await startApplication.tabNavigation('Start application'); + // await startApplication.groundsForTheApplication(); + // await groundsForTheApplication.groundsForTheApplicationSmokeTest(); + // await startApplication.groundsForTheApplicationHasBeenUpdated(); + // await startApplication.tabNavigation('View application'); //Add application documents - await startApplication.tabNavigation('Start application'); - await startApplication.addApplicationDetailsHeading.isVisible(); - await startApplication.addApplicationDocuments(); - await addApplicationDocuments.uploadDocumentSmokeTest(); - await startApplication.addApplicationDocumentsInProgress(); - await startApplication.tabNavigation('View application'); + // await startApplication.tabNavigation('Start application'); + // await startApplication.addApplicationDetailsHeading.isVisible(); + // await startApplication.addApplicationDocuments(); + // await addApplicationDocuments.uploadDocumentSmokeTest(); + // await startApplication.addApplicationDocumentsInProgress(); + // await startApplication.tabNavigation('View application'); -// Applicant Details - await startApplication.tabNavigation('Start application'); - await startApplication.applicantDetails(); - await applicantDetails.applicantDetailsNeeded(); - await startApplication.applicantDetailsHasBeenUpdated(); - await startApplication.tabNavigation('View application'); + // Applicant Details + // await startApplication.tabNavigation('Start application'); + // await startApplication.applicantDetails(); + // await applicantDetails.applicantDetailsNeeded(); + // await startApplication.applicantDetailsHasBeenUpdated(); + // await startApplication.tabNavigation('View application'); // Child details - await startApplication.tabNavigation('Start application'); - await startApplication.childDetails(); - await childDetails.childDetailsNeeded(); - await startApplication.childDetailsHasBeenUpdated(); - await startApplication.tabNavigation('View application'); + // await startApplication.tabNavigation('Start application'); + // await startApplication.childDetails(); + // await childDetails.childDetailsNeeded(); + // await startApplication.childDetailsHasBeenUpdated(); + // await startApplication.tabNavigation('View application'); // // Add respondents' details await startApplication.tabNavigation('Start application'); await startApplication.respondentDetails(); await respondentDetails.respondentDetailsNeeded(); - await startApplication.tabNavigation('View application'); // Allocation Proposal - await startApplication.tabNavigation('Start application'); - await startApplication.allocationProposal(); - await allocationProposal.allocationProposalSmokeTest(); - await startApplication.allocationProposalHasBeenUpdated(); - await startApplication.tabNavigation('View application'); + // await startApplication.tabNavigation('Start application'); + // await startApplication.allocationProposal(); + // await allocationProposal.allocationProposalSmokeTest(); + // await startApplication.allocationProposalHasBeenUpdated(); + // await startApplication.tabNavigation('View application'); // Submit the case await startApplication.tabNavigation('Start application'); @@ -112,24 +111,25 @@ test.describe('', () => { }); expect(accessibilityScanResults.violations).toEqual([]); - }); + }) + test('Private solicitor applies C110a application', async ({ - signInPage, - createCase, - ordersAndDirectionSought, - startApplication, - hearingUrgency, - groundsForTheApplication, - applicantDetails, - allocationProposal, - addApplicationDocuments, - childDetails, - respondentDetails, - submitCase, - page, + signInPage, + createCase, + ordersAndDirectionSought, + startApplication, + hearingUrgency, + groundsForTheApplication, + applicantDetails, + allocationProposal, + addApplicationDocuments, + childDetails, + respondentDetails, + submitCase, + page, caseFileView, - makeAxeBuilder - }, testInfo) => { + makeAxeBuilder + }, testInfo) => { // 1. Sign in as local-authority user await signInPage.visit(); @@ -141,7 +141,7 @@ test.describe('', () => { await signInPage.isSignedIn(); // Add application details - // Start new case, get case id and assert case id is created + //Start new case, get case id and assert case id is created await createCase.caseName(); await createCase.createCase(); await createCase.respondentSolicitorCreatCase(); @@ -149,58 +149,57 @@ test.describe('', () => { await startApplication.tabNavigation('View application'); - // Orders and directions sought - await startApplication.tabNavigation('Start application'); - await ordersAndDirectionSought.SoliciotrC110AAppOrderAndDirectionNeeded(); - await startApplication.ordersAndDirectionsSoughtFinishedStatus.isVisible(); - await startApplication.tabNavigation('View application'); + //Orders and directions sought + // await startApplication.tabNavigation('Start application'); + // await ordersAndDirectionSought.SoliciotrC110AAppOrderAndDirectionNeeded(); + // await startApplication.ordersAndDirectionsSoughtFinishedStatus.isVisible(); + // await startApplication.tabNavigation('View application'); // Hearing urgency - await startApplication.tabNavigation('Start application'); - await startApplication.hearingUrgency(); - await expect(hearingUrgency.hearingUrgencyHeading).toBeVisible(); - await hearingUrgency.hearingUrgencySmokeTest(); - await startApplication.tabNavigation('View application'); + // await startApplication.tabNavigation('Start application'); + // await startApplication.hearingUrgency(); + // await expect(hearingUrgency.hearingUrgencyHeading).toBeVisible(); + // await hearingUrgency.hearingUrgencySmokeTest(); + // await startApplication.tabNavigation('View application'); // Applicant Details - await startApplication.tabNavigation('Start application'); - await startApplication.applicantDetails(); - await applicantDetails.solicitorC110AApplicationApplicantDetails(); - await startApplication.applicantDetailsHasBeenUpdated(); - await startApplication.tabNavigation('View application'); + // await startApplication.tabNavigation('Start application'); + // await startApplication.applicantDetails(); + // await applicantDetails.solicitorC110AApplicationApplicantDetails(); + // await startApplication.applicantDetailsHasBeenUpdated(); + // await startApplication.tabNavigation('View application'); // Child details - await startApplication.tabNavigation('Start application'); - await startApplication.childDetails(); - await childDetails.childDetailsNeeded(); - await startApplication.childDetailsHasBeenUpdated(); - await startApplication.tabNavigation('View application'); + // await startApplication.tabNavigation('Start application'); + // await startApplication.childDetails(); + // await childDetails.childDetailsNeeded(); + // await startApplication.childDetailsHasBeenUpdated(); + // await startApplication.tabNavigation('View application'); // // Add respondents' details await startApplication.tabNavigation('Start application'); await startApplication.respondentDetails(); - await respondentDetails.respondentDetailsNeeded(); - await startApplication.tabNavigation('View application'); - - // Allocation Proposal - await startApplication.tabNavigation('Start application'); - await startApplication.allocationProposal(); - await allocationProposal.allocationProposalSmokeTest(); - await startApplication.allocationProposalHasBeenUpdated(); - await startApplication.tabNavigation('View application'); + await respondentDetails.respondentDetailsPrivateSolicitor(); + + // await startApplication.tabNavigation('Start application'); + // await startApplication.allocationProposal(); + // await allocationProposal.allocationProposalSmokeTest(); + // await startApplication.allocationProposalHasBeenUpdated(); + // await startApplication.tabNavigation('View application'); // Submit the case - await startApplication.tabNavigation('Start application'); - await startApplication.submitCase(); - await submitCase.submitCaseSmokeTest('£263.00'); - await caseFileView.goToCFVTab(); - await caseFileView.openFolder('Applications'); - await caseFileView.openFolder('Original Applications'); - await expect(page.getByRole('tree')).toContainText('Private_Solicitor_-C110_a_Application'); - await caseFileView.openDocInNewTab(); - await expect(caseFileView.docNewTab.getByText('Application from Private')).toBeVisible(); - + // await startApplication.tabNavigation('Start application'); + // await startApplication.submitCase(); + // await submitCase.submitCaseSmokeTest('£263.00'); + // await caseFileView.goToCFVTab(); + // await caseFileView.openFolder('Applications'); + // await caseFileView.openFolder('Original Applications'); + // await expect(page.getByRole('tree')).toContainText('Private_Solicitor_-C110_a_Application'); + // await caseFileView.openDocInNewTab(); + // await expect(caseFileView.docNewTab.getByText('Application from Private')).toBeVisible(); + // Allocation Proposal + }) }); From 8d5815355d5759e9e745686907129a4ada8b547e Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Mon, 14 Apr 2025 10:23:47 +0100 Subject: [PATCH 29/47] DFPL-2360 Changes added to Private sol --- playwright-e2e/pages/respondent-details.ts | 20 +++----------------- playwright-e2e/tests/smoke-test.spec.ts | 10 +++++----- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/playwright-e2e/pages/respondent-details.ts b/playwright-e2e/pages/respondent-details.ts index 7b982adb1d8..c87cd0bcb2f 100644 --- a/playwright-e2e/pages/respondent-details.ts +++ b/playwright-e2e/pages/respondent-details.ts @@ -127,6 +127,7 @@ export class RespondentDetails extends BasePage { await this.page.waitForTimeout(1000); await this.continue.click(); await this.saveAndContinue.click(); + await expect(this.page.getByText('has been updated with event:')).toBeVisible(); } async respondentDetailsPrivateSolicitor() { @@ -151,24 +152,8 @@ export class RespondentDetails extends BasePage { await this.relationToChild.fill('uncle'); await this.difficultyCapacity.getByLabel('No', { exact: true }).check(); await this.legalRepresentation.getByLabel('No').check(); - // await this.addNew.nth(1).check(); - // await this.addNew.check(); + await this.addNew.click(); - // await this.addNew.locator('input[type="radio"]').check() - // await this.firstName.locator('#respondents1_1_party_firstName').fill('Thierry'); - // await this.lastName.locator('#respondents1_1_party_lastName').fill('Jones'); - // await this.respondentdobDay.locator('#respondents1_1_party_party #dateOfBirth-day').fill('2'); - // await this.respondentdobMonth.locator('#respondents1_1_party_party #dateOfBirth-month').fill('5'); - // await this.respondentdobYear.locator('#respondents1_1_party_party #dateOfBirth-year').fill('1999'); - // await this.respondent2Gender.locator('#respondents1_1_party_gender').selectOption('2: Female'); - // await this.respondent2CurrentAddressKnown.locator('#respondents1_1_party_addressKnow-No').click(); - // await this.respondent2AddressUnknown.locator('[id="respondents1_1_party_addressNotKnowReason-Whereabouts\\ unknown"]').click(); - // await this.giveMoreDetails.getByRole('textbox', { name: 'Give more details' }).fill('Test'); - // await this.telephoneNumber.locator('#respondents1_1_party_telephoneNumber_telephoneNumber').fill('00000000'); - // await this.respondent2HiddenNumber.locator('#respondents1_1_party_hideTelephone_No').check(); - // await this.respondet2RelationshipToChild.locator('#respondents1_1_party_relationshipToChild').fill('Uncle'); - // await this.respondent2DifficultyUnderstandingCapacity.locator('#respondents1_1_party_litigationIssues-NO').check(); - // await this.respondent2DificultyCapacityReason.locator('#respondents1_1_legalRepresentation_No').check(); await this.respondentFirstName.fill('Moniks'); await this.respondentLastName.fill('Yaks'); await this.respondentdobDay.fill('31'); @@ -185,5 +170,6 @@ export class RespondentDetails extends BasePage { await this.page.waitForTimeout(1000); await this.continue.click(); await this.saveAndContinue.click(); + await expect(this.page.getByText('has been updated with event:')).toBeVisible(); } } diff --git a/playwright-e2e/tests/smoke-test.spec.ts b/playwright-e2e/tests/smoke-test.spec.ts index ac69256c62a..db3eeb69fa2 100644 --- a/playwright-e2e/tests/smoke-test.spec.ts +++ b/playwright-e2e/tests/smoke-test.spec.ts @@ -77,11 +77,11 @@ test.describe('', () => { // await startApplication.tabNavigation('View application'); // Child details - // await startApplication.tabNavigation('Start application'); - // await startApplication.childDetails(); - // await childDetails.childDetailsNeeded(); - // await startApplication.childDetailsHasBeenUpdated(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await startApplication.childDetails(); + await childDetails.childDetailsNeeded(); + await startApplication.childDetailsHasBeenUpdated(); + await startApplication.tabNavigation('View application'); // // Add respondents' details await startApplication.tabNavigation('Start application'); From 9efeaee7018c408f077165083d2ce18f99ffacbf Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Mon, 14 Apr 2025 11:26:09 +0100 Subject: [PATCH 30/47] DFPL-2360 --- playwright-e2e/pages/create-case.ts | 2 +- playwright-e2e/pages/respondent-details.ts | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/playwright-e2e/pages/create-case.ts b/playwright-e2e/pages/create-case.ts index 6b9f8cbe641..0c2c77ae3dc 100644 --- a/playwright-e2e/pages/create-case.ts +++ b/playwright-e2e/pages/create-case.ts @@ -134,7 +134,7 @@ export class CreateCase extends BasePage{ async respondentSolicitorCreatCase(){ await this.respondentSolicitorUser.check(); - await this.applicationFor.selectOption('Barnet Borough Hillingdon'); + await this.applicationFor.selectOption('Swansea City Council'); await this.clickContinue(); } } diff --git a/playwright-e2e/pages/respondent-details.ts b/playwright-e2e/pages/respondent-details.ts index c87cd0bcb2f..248fa0d26ae 100644 --- a/playwright-e2e/pages/respondent-details.ts +++ b/playwright-e2e/pages/respondent-details.ts @@ -66,7 +66,7 @@ export class RespondentDetails extends BasePage { this.relationToChild = page.getByLabel('Which children does the respondent have parental responsibility for and what is their relationship?'); this.legalRepresentation = page.getByRole('group', { name: 'Do they have legal representation?' }); this.addNew = page.getByRole('button', { name: 'Add new' }); - this.addNew = page.getByRole('button', { name: 'Add new' }).nth(1) + //this.addNew = page.getByRole('button', { name: 'Add new' }).nth(1) this.continue = page.getByRole('button', { name: 'Continue' }); this.saveAndContinue = page.getByRole('button', { name: 'Save and continue' }); this.confirmationCheckbox = page.getByLabel('I confirm that each person'); @@ -124,14 +124,14 @@ export class RespondentDetails extends BasePage { await this.respondet2RelationshipToChild.fill('uncle'); await this.respondent2DifficultyUnderstandingCapacity.click(); await this.respondent2DificultyCapacityReason.click(); - await this.page.waitForTimeout(1000); - await this.continue.click(); - await this.saveAndContinue.click(); + await this.clickContinue(); + await this.checkYourAnsAndSubmit(); await expect(this.page.getByText('has been updated with event:')).toBeVisible(); } async respondentDetailsPrivateSolicitor() { await expect.soft(this.respondentDetailsHeading).toBeVisible(); + await this.confirmationCheckbox.check(); await this.lawyerFirstName.fill('Tommy'); await this.lawyerLastName.fill('Lee'); await this.enterPostCode('sk3 8pp'); @@ -152,8 +152,7 @@ export class RespondentDetails extends BasePage { await this.relationToChild.fill('uncle'); await this.difficultyCapacity.getByLabel('No', { exact: true }).check(); await this.legalRepresentation.getByLabel('No').check(); - - await this.addNew.click(); + await this.addNew.nth(1).click(); await this.respondentFirstName.fill('Moniks'); await this.respondentLastName.fill('Yaks'); await this.respondentdobDay.fill('31'); @@ -167,9 +166,8 @@ export class RespondentDetails extends BasePage { await this.respondet2RelationshipToChild.fill('uncle'); await this.respondent2DifficultyUnderstandingCapacity.click(); await this.respondent2DificultyCapacityReason.click(); - await this.page.waitForTimeout(1000); - await this.continue.click(); - await this.saveAndContinue.click(); + await this.clickContinue(); + await this.checkYourAnsAndSubmit(); await expect(this.page.getByText('has been updated with event:')).toBeVisible(); } } From f38983d5a595220f433539a8aac5e23fe6861a93 Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Mon, 14 Apr 2025 13:03:53 +0100 Subject: [PATCH 31/47] DFPL-2360 --- playwright-e2e/tests/smoke-test.spec.ts | 141 +++++++++++++----------- 1 file changed, 74 insertions(+), 67 deletions(-) diff --git a/playwright-e2e/tests/smoke-test.spec.ts b/playwright-e2e/tests/smoke-test.spec.ts index db3eeb69fa2..0084177e148 100644 --- a/playwright-e2e/tests/smoke-test.spec.ts +++ b/playwright-e2e/tests/smoke-test.spec.ts @@ -42,39 +42,39 @@ test.describe('', () => { //await createCase.checkCaseIsCreated(createCase.generatedCaseName); // Orders and directions sought - // await startApplication.tabNavigation('Start application'); - // await ordersAndDirectionSought.ordersAndDirectionsNeeded(); - // await startApplication.addApplicationDetailsHeading.isVisible(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await ordersAndDirectionSought.ordersAndDirectionsNeeded(); + await startApplication.addApplicationDetailsHeading.isVisible(); + await startApplication.tabNavigation('View application'); // // Hearing urgency - // await startApplication.tabNavigation('Start application'); - // await startApplication.hearingUrgency(); - // await expect(hearingUrgency.hearingUrgencyHeading).toBeVisible(); - // await hearingUrgency.hearingUrgencySmokeTest(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await startApplication.hearingUrgency(); + await expect(hearingUrgency.hearingUrgencyHeading).toBeVisible(); + await hearingUrgency.hearingUrgencySmokeTest(); + await startApplication.tabNavigation('View application'); // Grounds for the application - // await startApplication.tabNavigation('Start application'); - // await startApplication.groundsForTheApplication(); - // await groundsForTheApplication.groundsForTheApplicationSmokeTest(); - // await startApplication.groundsForTheApplicationHasBeenUpdated(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await startApplication.groundsForTheApplication(); + await groundsForTheApplication.groundsForTheApplicationSmokeTest(); + await startApplication.groundsForTheApplicationHasBeenUpdated(); + await startApplication.tabNavigation('View application'); //Add application documents - // await startApplication.tabNavigation('Start application'); - // await startApplication.addApplicationDetailsHeading.isVisible(); - // await startApplication.addApplicationDocuments(); - // await addApplicationDocuments.uploadDocumentSmokeTest(); - // await startApplication.addApplicationDocumentsInProgress(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await startApplication.addApplicationDetailsHeading.isVisible(); + await startApplication.addApplicationDocuments(); + await addApplicationDocuments.uploadDocumentSmokeTest(); + await startApplication.addApplicationDocumentsInProgress(); + await startApplication.tabNavigation('View application'); // Applicant Details - // await startApplication.tabNavigation('Start application'); - // await startApplication.applicantDetails(); - // await applicantDetails.applicantDetailsNeeded(); - // await startApplication.applicantDetailsHasBeenUpdated(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await startApplication.applicantDetails(); + await applicantDetails.applicantDetailsNeeded(); + await startApplication.applicantDetailsHasBeenUpdated(); + await startApplication.tabNavigation('View application'); // Child details await startApplication.tabNavigation('Start application'); @@ -89,11 +89,11 @@ test.describe('', () => { await respondentDetails.respondentDetailsNeeded(); // Allocation Proposal - // await startApplication.tabNavigation('Start application'); - // await startApplication.allocationProposal(); - // await allocationProposal.allocationProposalSmokeTest(); - // await startApplication.allocationProposalHasBeenUpdated(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await startApplication.allocationProposal(); + await allocationProposal.allocationProposalSmokeTest(); + await startApplication.allocationProposalHasBeenUpdated(); + await startApplication.tabNavigation('View application'); // Submit the case await startApplication.tabNavigation('Start application'); @@ -150,56 +150,63 @@ test.describe('', () => { //Orders and directions sought - // await startApplication.tabNavigation('Start application'); - // await ordersAndDirectionSought.SoliciotrC110AAppOrderAndDirectionNeeded(); - // await startApplication.ordersAndDirectionsSoughtFinishedStatus.isVisible(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await ordersAndDirectionSought.SoliciotrC110AAppOrderAndDirectionNeeded(); + await startApplication.ordersAndDirectionsSoughtFinishedStatus.isVisible(); + await startApplication.tabNavigation('View application'); // Hearing urgency - // await startApplication.tabNavigation('Start application'); - // await startApplication.hearingUrgency(); - // await expect(hearingUrgency.hearingUrgencyHeading).toBeVisible(); - // await hearingUrgency.hearingUrgencySmokeTest(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await startApplication.hearingUrgency(); + await expect(hearingUrgency.hearingUrgencyHeading).toBeVisible(); + await hearingUrgency.hearingUrgencySmokeTest(); + await startApplication.tabNavigation('View application'); // Applicant Details - // await startApplication.tabNavigation('Start application'); - // await startApplication.applicantDetails(); - // await applicantDetails.solicitorC110AApplicationApplicantDetails(); - // await startApplication.applicantDetailsHasBeenUpdated(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await startApplication.applicantDetails(); + await applicantDetails.solicitorC110AApplicationApplicantDetails(); + await startApplication.applicantDetailsHasBeenUpdated(); + await startApplication.tabNavigation('View application'); // Child details - // await startApplication.tabNavigation('Start application'); - // await startApplication.childDetails(); - // await childDetails.childDetailsNeeded(); - // await startApplication.childDetailsHasBeenUpdated(); - // await startApplication.tabNavigation('View application'); + await startApplication.tabNavigation('Start application'); + await startApplication.childDetails(); + await childDetails.childDetailsNeeded(); + await startApplication.childDetailsHasBeenUpdated(); + await startApplication.tabNavigation('View application'); // // Add respondents' details await startApplication.tabNavigation('Start application'); await startApplication.respondentDetails(); await respondentDetails.respondentDetailsPrivateSolicitor(); - - // await startApplication.tabNavigation('Start application'); - // await startApplication.allocationProposal(); - // await allocationProposal.allocationProposalSmokeTest(); - // await startApplication.allocationProposalHasBeenUpdated(); - // await startApplication.tabNavigation('View application'); - // Submit the case - // await startApplication.tabNavigation('Start application'); - // await startApplication.submitCase(); - // await submitCase.submitCaseSmokeTest('£263.00'); - // await caseFileView.goToCFVTab(); - // await caseFileView.openFolder('Applications'); - // await caseFileView.openFolder('Original Applications'); - // await expect(page.getByRole('tree')).toContainText('Private_Solicitor_-C110_a_Application'); - // await caseFileView.openDocInNewTab(); - // await expect(caseFileView.docNewTab.getByText('Application from Private')).toBeVisible(); // Allocation Proposal - + await startApplication.tabNavigation('Start application'); + await startApplication.allocationProposal(); + await allocationProposal.allocationProposalSmokeTest(); + await startApplication.allocationProposalHasBeenUpdated(); + await startApplication.tabNavigation('View application'); + + + // await startApplication.tabNavigation('Start application'); + await startApplication.allocationProposal(); + await allocationProposal.allocationProposalSmokeTest(); + await startApplication.allocationProposalHasBeenUpdated(); + await startApplication.tabNavigation('View application'); + + // Submit the case + await startApplication.tabNavigation('Start application'); + await startApplication.submitCase(); + await submitCase.submitCaseSmokeTest('£263.00'); + await caseFileView.goToCFVTab(); + await caseFileView.openFolder('Applications'); + await caseFileView.openFolder('Original Applications'); + await expect(page.getByRole('tree')).toContainText('Private_Solicitor_-C110_a_Application'); + await caseFileView.openDocInNewTab(); + await expect(caseFileView.docNewTab.getByText('Application from Private')).toBeVisible + }) -}); +}) From 62bb4a3d19733639fabfad23afca8bcbb8d0fc53 Mon Sep 17 00:00:00 2001 From: Braimah101 <41795070+Braimah101@users.noreply.github.com> Date: Tue, 15 Apr 2025 07:49:14 +0100 Subject: [PATCH 32/47] Update smoke-test.spec.ts Changes to smoke test --- playwright-e2e/tests/smoke-test.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/playwright-e2e/tests/smoke-test.spec.ts b/playwright-e2e/tests/smoke-test.spec.ts index 0084177e148..c96ecf40f6a 100644 --- a/playwright-e2e/tests/smoke-test.spec.ts +++ b/playwright-e2e/tests/smoke-test.spec.ts @@ -190,8 +190,7 @@ test.describe('', () => { await startApplication.allocationProposalHasBeenUpdated(); await startApplication.tabNavigation('View application'); - - // await startApplication.tabNavigation('Start application'); + await startApplication.tabNavigation('Start application'); await startApplication.allocationProposal(); await allocationProposal.allocationProposalSmokeTest(); await startApplication.allocationProposalHasBeenUpdated(); From 5f5150f675175a5659d9de6880e6a56cd579871a Mon Sep 17 00:00:00 2001 From: Braimah101 <41795070+Braimah101@users.noreply.github.com> Date: Tue, 15 Apr 2025 08:23:42 +0100 Subject: [PATCH 33/47] Update smoke-test.spec.ts Added changes to smoke test --- playwright-e2e/tests/smoke-test.spec.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/playwright-e2e/tests/smoke-test.spec.ts b/playwright-e2e/tests/smoke-test.spec.ts index c96ecf40f6a..d51c3bc65a6 100644 --- a/playwright-e2e/tests/smoke-test.spec.ts +++ b/playwright-e2e/tests/smoke-test.spec.ts @@ -204,8 +204,5 @@ test.describe('', () => { await caseFileView.openFolder('Applications'); await caseFileView.openFolder('Original Applications'); await expect(page.getByRole('tree')).toContainText('Private_Solicitor_-C110_a_Application'); - await caseFileView.openDocInNewTab(); - await expect(caseFileView.docNewTab.getByText('Application from Private')).toBeVisible - - }) + }) }) From 87e4e301db15b83ab02abc0f36e43d21aed44e35 Mon Sep 17 00:00:00 2001 From: Braimah101 <41795070+Braimah101@users.noreply.github.com> Date: Tue, 15 Apr 2025 09:34:13 +0100 Subject: [PATCH 34/47] Update smoke-test.spec.ts --- playwright-e2e/tests/smoke-test.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/playwright-e2e/tests/smoke-test.spec.ts b/playwright-e2e/tests/smoke-test.spec.ts index d51c3bc65a6..c7cd49c9ca7 100644 --- a/playwright-e2e/tests/smoke-test.spec.ts +++ b/playwright-e2e/tests/smoke-test.spec.ts @@ -204,5 +204,6 @@ test.describe('', () => { await caseFileView.openFolder('Applications'); await caseFileView.openFolder('Original Applications'); await expect(page.getByRole('tree')).toContainText('Private_Solicitor_-C110_a_Application'); + await expect(caseFileView.docNewTab.getByText('Application from Private')).toBeVisible }) }) From 4e70e72017bde00a499c02be40859d17e003fbc1 Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Tue, 15 Apr 2025 08:20:55 +0100 Subject: [PATCH 35/47] DFPL-2360 --- playwright-e2e/pages/respondent-details.ts | 1 - playwright-e2e/tests/smoke-test.spec.ts | 18 ++++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/playwright-e2e/pages/respondent-details.ts b/playwright-e2e/pages/respondent-details.ts index 248fa0d26ae..5d90f4ba843 100644 --- a/playwright-e2e/pages/respondent-details.ts +++ b/playwright-e2e/pages/respondent-details.ts @@ -66,7 +66,6 @@ export class RespondentDetails extends BasePage { this.relationToChild = page.getByLabel('Which children does the respondent have parental responsibility for and what is their relationship?'); this.legalRepresentation = page.getByRole('group', { name: 'Do they have legal representation?' }); this.addNew = page.getByRole('button', { name: 'Add new' }); - //this.addNew = page.getByRole('button', { name: 'Add new' }).nth(1) this.continue = page.getByRole('button', { name: 'Continue' }); this.saveAndContinue = page.getByRole('button', { name: 'Save and continue' }); this.confirmationCheckbox = page.getByLabel('I confirm that each person'); diff --git a/playwright-e2e/tests/smoke-test.spec.ts b/playwright-e2e/tests/smoke-test.spec.ts index c7cd49c9ca7..212afe379a3 100644 --- a/playwright-e2e/tests/smoke-test.spec.ts +++ b/playwright-e2e/tests/smoke-test.spec.ts @@ -171,6 +171,7 @@ test.describe('', () => { await startApplication.applicantDetailsHasBeenUpdated(); await startApplication.tabNavigation('View application'); + // Child details await startApplication.tabNavigation('Start application'); await startApplication.childDetails(); @@ -178,11 +179,13 @@ test.describe('', () => { await startApplication.childDetailsHasBeenUpdated(); await startApplication.tabNavigation('View application'); - // // Add respondents' details + + // Add respondents' details await startApplication.tabNavigation('Start application'); await startApplication.respondentDetails(); await respondentDetails.respondentDetailsPrivateSolicitor(); + // Allocation Proposal await startApplication.tabNavigation('Start application'); await startApplication.allocationProposal(); @@ -190,11 +193,6 @@ test.describe('', () => { await startApplication.allocationProposalHasBeenUpdated(); await startApplication.tabNavigation('View application'); - await startApplication.tabNavigation('Start application'); - await startApplication.allocationProposal(); - await allocationProposal.allocationProposalSmokeTest(); - await startApplication.allocationProposalHasBeenUpdated(); - await startApplication.tabNavigation('View application'); // Submit the case await startApplication.tabNavigation('Start application'); @@ -203,7 +201,11 @@ test.describe('', () => { await caseFileView.goToCFVTab(); await caseFileView.openFolder('Applications'); await caseFileView.openFolder('Original Applications'); + await expect(page.getByRole('tree')).toContainText('Private_Solicitor_-C110_a_Application'); - await expect(caseFileView.docNewTab.getByText('Application from Private')).toBeVisible + await caseFileView.openDocInNewTab(); + await expect(caseFileView.docNewTab.getByText('Application from Private')).toBeVisible(); }) -}) + + }) + From 898ab58edfadaf743ca4dc2b359f3b0dad9d667e Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Tue, 15 Apr 2025 09:58:18 +0100 Subject: [PATCH 36/47] DFPL-2360 --- playwright-e2e/pages/respondent-details.ts | 2 ++ playwright-e2e/tests/smoke-test.spec.ts | 5 +---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/playwright-e2e/pages/respondent-details.ts b/playwright-e2e/pages/respondent-details.ts index 5d90f4ba843..1887fa51dc9 100644 --- a/playwright-e2e/pages/respondent-details.ts +++ b/playwright-e2e/pages/respondent-details.ts @@ -123,6 +123,7 @@ export class RespondentDetails extends BasePage { await this.respondet2RelationshipToChild.fill('uncle'); await this.respondent2DifficultyUnderstandingCapacity.click(); await this.respondent2DificultyCapacityReason.click(); + await this.page.waitForTimeout(300); // this needs to be removed once EXUI resolves issue await this.clickContinue(); await this.checkYourAnsAndSubmit(); await expect(this.page.getByText('has been updated with event:')).toBeVisible(); @@ -165,6 +166,7 @@ export class RespondentDetails extends BasePage { await this.respondet2RelationshipToChild.fill('uncle'); await this.respondent2DifficultyUnderstandingCapacity.click(); await this.respondent2DificultyCapacityReason.click(); + await this.page.waitForTimeout(300); // this needs to be removed once EXUI resolves issue await this.clickContinue(); await this.checkYourAnsAndSubmit(); await expect(this.page.getByText('has been updated with event:')).toBeVisible(); diff --git a/playwright-e2e/tests/smoke-test.spec.ts b/playwright-e2e/tests/smoke-test.spec.ts index 212afe379a3..51e69bffade 100644 --- a/playwright-e2e/tests/smoke-test.spec.ts +++ b/playwright-e2e/tests/smoke-test.spec.ts @@ -171,7 +171,6 @@ test.describe('', () => { await startApplication.applicantDetailsHasBeenUpdated(); await startApplication.tabNavigation('View application'); - // Child details await startApplication.tabNavigation('Start application'); await startApplication.childDetails(); @@ -179,13 +178,11 @@ test.describe('', () => { await startApplication.childDetailsHasBeenUpdated(); await startApplication.tabNavigation('View application'); - - // Add respondents' details + // // Add respondents' details await startApplication.tabNavigation('Start application'); await startApplication.respondentDetails(); await respondentDetails.respondentDetailsPrivateSolicitor(); - // Allocation Proposal await startApplication.tabNavigation('Start application'); await startApplication.allocationProposal(); From 3aa9309957160408f0735f8c91b4d8f6eb4bbd71 Mon Sep 17 00:00:00 2001 From: prabhamuthu15 Date: Tue, 15 Apr 2025 13:28:40 +0100 Subject: [PATCH 37/47] # Conflicts: OtherPeopleChanges --- .../pages/other-people-in-the-case.ts | 140 +++++++++--------- 1 file changed, 72 insertions(+), 68 deletions(-) diff --git a/playwright-e2e/pages/other-people-in-the-case.ts b/playwright-e2e/pages/other-people-in-the-case.ts index b0829a1540b..ddcc9636ebc 100644 --- a/playwright-e2e/pages/other-people-in-the-case.ts +++ b/playwright-e2e/pages/other-people-in-the-case.ts @@ -2,76 +2,80 @@ import { type Page, type Locator, expect } from "@playwright/test"; import { BasePage } from "./base-page"; export class OtherPeopleInCase extends BasePage { - readonly otherPeopleHeading: Locator; - readonly fullName: Locator; - readonly dobDay: Locator; - readonly dobMonth: Locator; - readonly dobYear: Locator; - readonly gender: Locator; - readonly placeOfBirth: Locator; - readonly currentAddress: Locator; - readonly reasonUnknownAddress: Locator; - readonly telephoneNumber: Locator; - readonly relationshipToChild: Locator; - readonly contactDetailsHidden: Locator; - readonly addNew: Locator; + readonly otherPeopleHeading: Locator; + readonly firstName: Locator; + readonly lastName: Locator + readonly dobDay: Locator; + readonly dobMonth: Locator; + readonly dobYear: Locator; + readonly currentAddress: Locator; + readonly addressUnknown: Locator; + readonly giveMoreDetails: Locator; + readonly telephoneNumber: Locator; + readonly numberConfidential: Locator; + readonly relationshipToChild: Locator; + readonly contactDetailsHidden: Locator; + readonly addNew: Locator; + readonly difficultyCapacity: Locator; + readonly giveDetails: Locator; + readonly litigation: Locator; - public constructor(page: Page) { - super(page); - this.otherPeopleHeading = page.getByRole("heading", {name: "Other people in the case", exact: true}); - this.fullName = page.getByLabel('Full name (Optional)'); - this.dobDay = page.getByLabel('Day'); - this.dobMonth = page.getByLabel('Month'); - this.dobYear = page.getByLabel('Year'); - this.gender = page.getByLabel('Gender (Optional)'); - this.placeOfBirth = page.getByLabel('Place of birth (Optional)'); - this.currentAddress = page.getByRole('group', { name: '*Current address known? (' }); - this.reasonUnknownAddress = page.getByLabel('*Reason the address is not'); - this.telephoneNumber = page.getByLabel('Telephone number (Optional)'); - this.relationshipToChild = page.getByText('What is this person\'s relationship to the child or children in this case? (Optional)'); - this.contactDetailsHidden = page.getByRole('group', { name: 'Do you need contact details' }); - this.addNew = page.getByRole('button', { name: 'Add new' }); + public constructor(page: Page) { + super(page); + this.otherPeopleHeading = page.getByRole("heading", { name: 'Other people to be given notice', exact: true }); + this.firstName = page.getByLabel('First name'); + this.lastName = page.getByLabel('Last name'); + this.dobDay = page.getByLabel('Day'); + this.dobMonth = page.getByLabel('Month'); + this.dobYear = page.getByLabel('Year'); + this.currentAddress = page.getByRole('group', { name: 'Current address known?' }); + this.addressUnknown = page.getByLabel('Whereabouts unknown'); + this.giveMoreDetails = page.getByLabel('Give more details'); + this.telephoneNumber = page.getByLabel('Telephone number (Optional)'); + this.numberConfidential = page.getByRole('group', { name: 'Do you need to keep the' }); + this.relationshipToChild = page.getByText('What is this person\'s'); + this.contactDetailsHidden = page.getByRole('group', { name: 'Do you need contact details' }); + this.difficultyCapacity = page.getByRole('group', { name: 'Do you believe this person' }); + this.litigation = page.getByRole('group', { name: 'Do you believe this person' }).getByLabel('No', { exact: true }); + this.addNew = page.getByRole('button', { name: 'Add new' }); + this.giveDetails = page.getByRole('textbox', { name: 'Give details, including' }); + } - } + async personOneToBeGivenNotice() { + await expect.soft(this.otherPeopleHeading).toBeVisible(); + await this.addNew.click(); + await this.firstName.fill('John'); + await this.lastName.fill('Joe') + await this.dobDay.fill('11'); + await this.dobMonth.fill('10'); + await this.dobYear.fill('1990') + await this.currentAddress.getByLabel('No').click(); + await this.currentAddress.getByLabel('No').click(); + await this.addressUnknown.click(); + await this.giveMoreDetails.fill('test'); + await this.telephoneNumber.fill('0123456789'); + await this.numberConfidential.getByLabel('No').check(); + await this.relationshipToChild.fill('uncle') + await this.difficultyCapacity.getByLabel('No', { exact: true }).check(); + } - async personOneToBeGivenNotice() { - await this.fullName.fill("John Doe"); - await this.dobDay.fill("1"); - await this.dobMonth.fill("10"); - await this.dobYear.fill("1990") - await this.gender.selectOption('1: Male'); - await this.placeOfBirth.fill("London"); - await this.currentAddress.getByLabel('No').check(); - await this.reasonUnknownAddress.selectOption('1: No fixed abode'); - await this.telephoneNumber.fill("0123456789") - await this.relationshipToChild.fill("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam fermentum augue velit, eget bibendum est viverra vel. Sed id urna mollis") - await this.contactDetailsHidden.getByLabel('No').check(); - await this.page.getByLabel('Don\'t know').check(); - } + async personTwoToBeGivenNotice() { + await this.addNew.nth(1).click(); + await this.page.locator('#othersV2_1_firstName').fill('Jane'); + await this.page.locator('#othersV2_1_lastName').fill('Law'); + await this.page.locator('#DOB-day').nth(1).fill('11'); + await this.page.locator('#DOB-month').nth(1).fill('4'); + await this.page.locator('#DOB-year').nth(1).fill('1980'); + await this.page.getByRole('radio', { name: 'No', exact: true }).nth(3).click(); + await this.page.getByRole('radio', { name: 'No', exact: true }).nth(3).click(); + await this.page.locator('[id="othersV2_1_addressNotKnowReason-No\\ fixed\\ abode"]').check(); + await this.page.locator('#othersV2_1_telephone').fill('00000000000'); + await this.page.locator('#othersV2_1_childInformation').fill('Uncle'); + await this.page.locator('#othersV2_1_litigationIssues-NO').dblclick(); + } - async personTwoToBeGivenNotice() { - await this.addNew.click(); - await this.page.locator('#others_additionalOthers_0_name').fill('Jane Doe'); - await this.page.locator('#others_additionalOthers #DOB-day').fill("2"); - await this.page.locator('#others_additionalOthers #DOB-month').fill("11"); - await this.page.locator('#others_additionalOthers #DOB-year').fill("1999"); - await this.page.locator('#others_additionalOthers_0_gender').selectOption('2: Female'); - await this.page.locator('#others_additionalOthers_0_birthPlace').fill("Leeds"); - await this.page.locator('#others_additionalOthers_0_addressKnowV2-No').check(); - await this.page.locator('#others_additionalOthers_0_addressNotKnowReason').selectOption('1: No fixed abode'); - await this.page.locator('#others_additionalOthers_0_telephone').fill("0123456789"); - await this.page.locator('#others_additionalOthers_0_childInformation').fill("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam fermentum augue velit, eget bibendum est viverra vel. Sed id urna mollis"); - await this.page.locator('#others_additionalOthers_0_detailsHidden_No').check(); - await this.page.locator('#others_additionalOthers_0_litigationIssues-NO').check(); - } - - async continueAndCheck(){ - await this.clickContinue(); - await this.page.getByText("John Doe", { exact: true }); - await this.page.getByText("1990", { exact: true }); - await this.page.getByText("London", { exact: true }); - await this.page.getByText("0123456789", { exact: true }); - await this.checkYourAnsAndSubmit(); - } + async continueAndCheck() { + await this.continueButton.click(); + await this.saveAndContinue.click(); + } } - From b7b6b9f79f3843aaa32c8b7b03bf0eaf9de385fa Mon Sep 17 00:00:00 2001 From: prabhamuthu15 Date: Tue, 15 Apr 2025 13:30:56 +0100 Subject: [PATCH 38/47] # Conflicts: OtherToGIvenNotice --- .../pages/others-to-be-given-notice.ts | 118 ++++++++++-------- 1 file changed, 63 insertions(+), 55 deletions(-) diff --git a/playwright-e2e/pages/others-to-be-given-notice.ts b/playwright-e2e/pages/others-to-be-given-notice.ts index 7687ef0726c..eb7af3ac3e8 100644 --- a/playwright-e2e/pages/others-to-be-given-notice.ts +++ b/playwright-e2e/pages/others-to-be-given-notice.ts @@ -2,68 +2,76 @@ import { type Page, type Locator, expect } from "@playwright/test"; import { BasePage } from "./base-page"; export class OthersToBeGivenNotice extends BasePage { - readonly othersToBeGivenNoticeHeading: Locator; - readonly fullName: Locator; - readonly dobDay: Locator; - readonly dobMonth: Locator; - readonly dobYear: Locator; - readonly gender: Locator; - readonly placeOfBirth: Locator; + readonly inputFirstName: Locator; + readonly inputLastName: Locator + readonly inputDobDay: Locator; + readonly inputDobMonth: Locator; + readonly inputDobYear: Locator; readonly currentAddress: Locator; - readonly reasonUnknownAddress: Locator; + readonly currentAddressNo: Locator; + readonly addressUnknown: Locator; + readonly giveMoreDetails: Locator; readonly telephoneNumber: Locator; + readonly numberConfidential: Locator; readonly relationshipToChild: Locator; readonly contactDetailsHidden: Locator; readonly addNew: Locator; - readonly hiddenDetails: Locator; + readonly difficultyCapacity: Locator; + readonly giveDetails: Locator; + readonly litigation: Locator; public constructor(page: Page) { super(page); - this.othersToBeGivenNoticeHeading = page.getByRole("heading", {name: "Other people in the case", exact: true}); - this.fullName = page.getByLabel('Full name (Optional)'); - this.dobDay = page.getByLabel('Day'); - this.dobMonth = page.getByLabel('Month'); - this.dobYear = page.getByLabel('Year'); - this.gender = page.getByLabel('Gender (Optional)'); - this.placeOfBirth = page.getByLabel('Place of birth (Optional)'); - this.currentAddress = page.getByRole('group', {name: '*Current address known? ('}); - this.reasonUnknownAddress = page.getByLabel('*Reason the address is not'); - this.telephoneNumber = page.getByLabel('Telephone number (Optional)'); - this.relationshipToChild = page.getByText('What is this person\'s relationship to the child or children in this case? (Optional)'); - this.contactDetailsHidden = page.getByRole('group', {name: 'Do you need contact details'}); - this.addNew = page.getByRole('button', {name: 'Add new'}); - this.hiddenDetails = page.locator('#others_additionalOthers_0_detailsHidden_No'); - } + this.inputFirstName = page.getByLabel('First name'); + this.inputLastName = page.getByLabel('Last name'); + this.inputDobDay = page.getByLabel('Day'); + this.inputDobMonth = page.getByLabel('Month'); + this.inputDobYear = page.getByLabel('Year'); + this.currentAddress = page.getByRole('group', { name: 'Current address known?' }); + this.currentAddressNo = this.currentAddress.getByLabel('No'); + this.addressUnknown = page.getByLabel('Whereabouts unknown'); + this.giveMoreDetails = page.getByLabel('Give more details'); + this.telephoneNumber = page.getByLabel('Telephone number (Optional)'); + this.numberConfidential = page.getByRole('group', { name: 'Do you need to keep the' }); + this.relationshipToChild = page.getByText('What is this person\'s'); + this.contactDetailsHidden = page.getByRole('group', { name: 'Do you need contact details' }); + this.difficultyCapacity = page.getByRole('group', { name: 'Do you believe this person' }); + this.litigation = page.getByRole('group', { name: 'Do you believe this person' }).getByLabel('No', { exact: true }); + this.addNew = page.getByRole('button', { name: 'Add new' }); + this.giveDetails = page.getByRole('textbox', { name: 'Give details, including' }); + } - - async othersToBeGivenNotice() - { - await expect(this.othersToBeGivenNoticeHeading).toBeVisible; - await this.fullName.fill("John Doe"); - await this.dobDay.fill("1"); - await this.dobMonth.fill("10"); - await this.dobYear.fill("1990") - await this.gender.selectOption('1: Male'); - await this.placeOfBirth.fill("London"); - await this.currentAddress.getByLabel('No').check(); - await this.reasonUnknownAddress.selectOption('1: No fixed abode'); - await this.telephoneNumber.fill("0123456789") - await this.relationshipToChild.fill("uncle") - await this.contactDetailsHidden.getByLabel('No').check(); - await this.page.getByLabel('Don\'t know').check(); - await this.addNew.click(); - await this.page.locator('#others_additionalOthers_0_name').fill('John Grey'); - await this.page.locator('#others_additionalOthers #DOB-day').fill("12"); - await this.page.locator('#others_additionalOthers #DOB-month').fill("11"); - await this.page.locator('#others_additionalOthers #DOB-year').fill("1999"); - await this.page.locator('#others_additionalOthers_0_gender').selectOption('2: Female'); - await this.page.locator('#others_additionalOthers_0_birthPlace').fill("London"); - await this.page.locator('#others_additionalOthers_0_addressKnowV2-No').check(); - await this.page.locator('#others_additionalOthers_0_addressNotKnowReason').selectOption('1: No fixed abode'); - await this.page.locator('#others_additionalOthers_0_telephone').fill("0000000000"); - await this.page.locator('#others_additionalOthers_0_childInformation').fill('test'); - await this.page.locator('#others_additionalOthers_0_litigationIssues-NO').check(); - await this.submit.click(); - await this.saveAndContinue.click(); - } + async othersToBeGivenNotice() { + await this.page.pause(); + await this.addNew.click(); + await this.inputFirstName.fill('James'); + await this.inputLastName.fill('Trace'); + await this.inputDobDay.fill('12') + await this.inputDobMonth.fill('05'); + await this.inputDobYear.fill('1988'); + await this.currentAddress.getByLabel('No').click(); + await this.currentAddress.getByLabel('No').click(); + await this.currentAddressNo.click(); + await this.currentAddressNo.click(); + await this.addressUnknown.click(); + await this.giveMoreDetails.fill('testing'); + await this.telephoneNumber.fill('03456789000'); + await this.numberConfidential.getByLabel('No').check(); + await this.relationshipToChild.fill('uncle') + await this.difficultyCapacity.getByLabel('No', { exact: true }).check(); + await this.addNew.nth(1).click(); + await this.page.locator('#othersV2_1_firstName').fill('Tim'); + await this.page.locator('#othersV2_1_lastName').fill('kim'); + await this.page.locator('#DOB-day').nth(1).fill('4'); + await this.page.locator('#DOB-month').nth(1).fill('4'); + await this.page.locator('#DOB-year').nth(1).fill('1980'); + await this.page.locator ('#othersV2_1_addressKnowV2-No').click(); + await this.page.locator ('#othersV2_1_addressKnowV2-No').click(); + await this.page.locator('[id="othersV2_1_addressNotKnowReason-No\\ fixed\\ abode"]').click(); + await this.page.locator('#othersV2_1_telephone').fill('00000000000'); + await this.page.locator('#othersV2_1_childInformation').fill('Uncle'); + await this.page.locator('#othersV2_1_litigationIssues-NO').dblclick(); + await this.submit.click(); + await this.saveAndContinue.click(); + } }; From eacffe0f7b5baf3e8b95891660f56d305bc5a9e1 Mon Sep 17 00:00:00 2001 From: prabhamuthu15 Date: Tue, 15 Apr 2025 13:34:01 +0100 Subject: [PATCH 39/47] # Conflicts: startApplication --- playwright-e2e/pages/start-application.ts | 416 +++++++++++----------- 1 file changed, 208 insertions(+), 208 deletions(-) diff --git a/playwright-e2e/pages/start-application.ts b/playwright-e2e/pages/start-application.ts index 53565dc570d..ccde2f6c743 100644 --- a/playwright-e2e/pages/start-application.ts +++ b/playwright-e2e/pages/start-application.ts @@ -2,212 +2,212 @@ import { type Page, type Locator, expect } from "@playwright/test"; import {BasePage} from "./base-page"; export class StartApplication extends BasePage { - readonly addApplicationDetailsHeading: Locator; - readonly ordersAndDirectionsSoughtLink: Locator; - readonly factorsAffectingParentingLink: Locator; - readonly hearingUrgencyLink: Locator; - readonly groundsForTheApplicationLink: Locator; - readonly riskAndHarmToChildrenLink: Locator; - readonly hearingUrgencyHeader: Locator; - readonly groundsForTheApplicationHeading: Locator; - readonly groundsForTheApplicationHasBeenUpdatedFinished: Locator; - readonly allocationProposalFinished: Locator; - readonly allocationProposalLink: Locator; - readonly allocationProposalHeading: Locator; - readonly addApplicationDocsHeading: Locator; - readonly uploadDocumentsLink: Locator; - readonly upLoadDocsInProgress: Locator; - readonly applicantDetailsLink: Locator; - readonly childDetailsLink: Locator; - readonly childDetailsUpdated: Locator; - readonly respondentsDetailsLink: Locator; - readonly applicantDetailsUpdated: Locator; - readonly welshLanguageRequirements: Locator; - readonly welshLanguageReqFinished: Locator; - readonly otherProceedingsLink: Locator; - readonly internationalElementsHeading: Locator; - readonly courtServices: Locator; - readonly submitApplicationLink: Locator; - readonly otherPeopleInCaseLink: Locator; - readonly returnApplicationLink: Locator; - readonly ordersAndDirectionsSoughtFinishedStatus: Locator; - - // readonly logExpertReportLink: Locator; - public constructor(page: Page) { -super(page); - this.addApplicationDetailsHeading = page.getByRole("heading", { name: "Add application details", }); - this.ordersAndDirectionsSoughtLink = page.getByRole("heading", { name: "Orders and directions sought", }); - this.factorsAffectingParentingLink = page.getByRole("heading", { name: "Factors affecting parenting", }); - this.hearingUrgencyLink = page.getByRole("link", { name: "Hearing urgency", }); - this.hearingUrgencyHeader = page.getByRole("heading", { name: "Hearing urgency", }); - this.groundsForTheApplicationLink = page.getByRole("link", { name: "Grounds for the application", }); - this.groundsForTheApplicationHeading = page.getByRole("heading", { name: "Grounds for the application", }); - // this.groundsForTheApplicationHasBeenUpdatedFinished = page.locator('heading-h2',); - this.groundsForTheApplicationHasBeenUpdatedFinished = page.locator('xpath=//*[@id="taskListLabel"]/dt/ccd-markdown/div/markdown/div/p[4]/img',); - this.riskAndHarmToChildrenLink = page.getByRole("link", { name: "Risk and harm to children", }); - this.allocationProposalFinished = page.locator('p').filter({ hasText: 'Allocation proposal' }).getByRole('img', { name: 'Finished' }); - this.allocationProposalHeading = page.getByRole("group", { name: "Allocation proposal" }).getByRole("heading"); - this.allocationProposalLink = page.getByRole("link", { name: "Allocation proposal", }); - this.uploadDocumentsLink = page.getByRole("link", { name: "Upload documents", }); - this.addApplicationDocsHeading = page.getByRole("heading", { name: "Application documents", }); - this.upLoadDocsInProgress = page.locator('p').filter({ hasText: 'Upload documents' }).getByRole('img', { name: 'Finished' }) - this.applicantDetailsLink = page.getByRole('link', { name: 'Applicant\'s details' }); - this.respondentsDetailsLink = page.getByRole('link', { name: 'Respondents\' details' }); - this.applicantDetailsUpdated = page.locator('p').filter({ hasText: 'Applicant\'s details' }).getByRole('img', { name: 'Information added' }); - this.childDetailsLink = page.getByRole("link", { name: 'Child\'s Details', }); - this.respondentsDetailsLink = page.getByRole('link', { name: 'Respondents\' details' }); - this.childDetailsUpdated = page.locator('p').filter({ hasText: 'Child\'s Details' }).getByRole('img', { name: 'Information added' }); - this.welshLanguageRequirements = page.getByRole('link', { name: 'Welsh language requirements' }); - this.welshLanguageReqFinished = page.locator('p:has(a[text="Welsh language requirements"]) > img[title="Finished"]'); - this.internationalElementsHeading = page.getByRole('link', { name: 'International element' }); - this.submitApplicationLink = page.getByRole('link', { name: 'Submit application' }) - this.otherProceedingsLink = page.getByRole('link', { name: "Other Proceedings", }); - this.courtServices = page.getByRole('link', { name: 'Court services'}); - this.otherPeopleInCaseLink = page.getByRole('link', { name: 'Other people in the case'}); - this.returnApplicationLink = page.getByRole('link', { name: 'Return application'}); - this.ordersAndDirectionsSoughtFinishedStatus = page.locator('p').filter({ hasText: 'Orders and directions sought' }).getByRole('img'); - - } - async groundsForTheApplication() { - - await expect(()=>{ - this.page.reload(); - expect(this.groundsForTheApplicationLink).toBeVisible(); - this.groundsForTheApplicationLink.click(); - expect( this.groundsForTheApplicationLink).toBeHidden(); - }).toPass(); - // expect(await this.groundsForTheApplicationLink).toBeVisible(); - - // await expect(this.groundsForTheApplicationHeading).toBeVisible(); - } - - async groundsForTheApplicationHasBeenUpdated() { - await expect(this.groundsForTheApplicationHasBeenUpdatedFinished).toBeVisible(); - } - - async hearingUrgency() { - await expect(() => { - expect(this.hearingUrgencyLink).toBeVisible(); - this.hearingUrgencyLink.click(); - expect(this.hearingUrgencyLink).toBeHidden(); - this.page.reload(); - - }).toPass(); - - await expect(this.hearingUrgencyHeader).toBeVisible(); - } - - async riskAndHarmToChildren() { - await expect(this.riskAndHarmToChildrenLink).toBeVisible(); - await this.riskAndHarmToChildrenLink.click(); - } - - async addApplicationDocuments() { - - await expect(()=>{ - expect(this.uploadDocumentsLink).toBeVisible(); - this.uploadDocumentsLink.click(); - expect(this.uploadDocumentsLink).toBeHidden(); - this.page.reload(); - }).toPass(); - // await expect(this.uploadDocumentsLink).toBeVisible(); - // await this.uploadDocumentsLink.click(); - } - - async addApplicationDocumentsInProgress() { - await expect(this.upLoadDocsInProgress).toBeVisible(); - } - - async applicantDetails() { - await expect(()=>{ - expect(this.applicantDetailsLink).toBeVisible(); - this.applicantDetailsLink.click(); - expect(this.applicantDetailsLink).toBeHidden(); - this.page.reload(); - }).toPass(); - // await expect(this.applicantDetailsLink).toBeVisible(); - // await this.applicantDetailsLink.click(); - } - - async applicantDetailsHasBeenUpdated() { - await expect(this.applicantDetailsUpdated).toBeVisible(); - } - - async childDetails() { - await expect(()=>{ - expect(this.childDetailsLink).toBeVisible(); - this.childDetailsLink.click(); - expect(this.childDetailsLink).toBeHidden(); - this.page.reload(); - }).toPass(); - // await expect(this.childDetailsLink).toBeVisible(); - // await this.childDetailsLink.click(); - } - - async childDetailsHasBeenUpdated() { - await expect(this.childDetailsUpdated).toBeVisible(); - } - - async respondentDetails() { - await expect(()=>{ - expect(this.respondentsDetailsLink).toBeVisible(); - this.respondentsDetailsLink.click(); - expect(this.respondentsDetailsLink).toBeHidden(); - this.page.reload(); - }).toPass(); - // await expect(this.respondentsDetailsLink).toBeVisible(); - // await this.respondentsDetailsLink.click(); - } - - async allocationProposal() { - - await expect(()=>{ - expect(this.allocationProposalLink).toBeVisible(); - this.allocationProposalLink.click(); - expect(this.allocationProposalLink).toBeHidden(); - this.page.reload(); - }).toPass(); - // await this.allocationProposalLink.click(); - // await expect(this.allocationProposalLink).toBeVisible(); - } - - async allocationProposalHasBeenUpdated() { - await expect(this.allocationProposalFinished).toBeVisible(); - } - - async otherProceedingsNeeded() { - await this.otherProceedingsLink.click(); - } - - async welshLanguageReq() { - await this.welshLanguageRequirements.click(); - } - - async welshLanguageReqUpdated() { - await expect(this.welshLanguageReqFinished).toBeVisible; - } - - async internationalElementReqUpdated() { - await expect(this.internationalElementsHeading).toBeVisible(); - await this.internationalElementsHeading.click(); - } - - async courtServicesReqUpdated() { - await expect(this.courtServices).toBeVisible(); - await this.courtServices.click(); - } - - async addOtherPeopleInCase() { - await expect(this.otherPeopleInCaseLink).toBeVisible(); - await this.otherPeopleInCaseLink.click(); - } - - async returnApplication() { - await expect(this.returnApplicationLink).toBeVisible(); - await this.returnApplicationLink.click(); - } - - async submitCase() { - await this.submitApplicationLink.click(); - } + readonly addApplicationDetailsHeading: Locator; + readonly ordersAndDirectionsSoughtLink: Locator; + readonly factorsAffectingParentingLink: Locator; + readonly hearingUrgencyLink: Locator; + readonly groundsForTheApplicationLink: Locator; + readonly riskAndHarmToChildrenLink: Locator; + readonly hearingUrgencyHeader: Locator; + readonly groundsForTheApplicationHeading: Locator; + readonly groundsForTheApplicationHasBeenUpdatedFinished: Locator; + readonly allocationProposalFinished: Locator; + readonly allocationProposalLink: Locator; + readonly allocationProposalHeading: Locator; + readonly addApplicationDocsHeading: Locator; + readonly uploadDocumentsLink: Locator; + readonly upLoadDocsInProgress: Locator; + readonly applicantDetailsLink: Locator; + readonly childDetailsLink: Locator; + readonly childDetailsUpdated: Locator; + readonly respondentsDetailsLink: Locator; + readonly applicantDetailsUpdated: Locator; + readonly welshLanguageRequirements: Locator; + readonly welshLanguageReqFinished: Locator; + readonly otherProceedingsLink: Locator; + readonly internationalElementsHeading: Locator; + readonly courtServices: Locator; + readonly submitApplicationLink: Locator; + readonly otherPeopleInCaseLink: Locator; + readonly returnApplicationLink: Locator; + readonly ordersAndDirectionsSoughtFinishedStatus: Locator; + + // readonly logExpertReportLink: Locator; + public constructor(page: Page) { + super(page); + this.addApplicationDetailsHeading = page.getByRole("heading", { name: "Add application details", }); + this.ordersAndDirectionsSoughtLink = page.getByRole("heading", { name: "Orders and directions sought", }); + this.factorsAffectingParentingLink = page.getByRole("heading", { name: "Factors affecting parenting", }); + this.hearingUrgencyLink = page.getByRole("link", { name: "Hearing urgency", }); + this.hearingUrgencyHeader = page.getByRole("heading", { name: "Hearing urgency", }); + this.groundsForTheApplicationLink = page.getByRole("link", { name: "Grounds for the application", }); + this.groundsForTheApplicationHeading = page.getByRole("heading", { name: "Grounds for the application", }); + // this.groundsForTheApplicationHasBeenUpdatedFinished = page.locator('heading-h2',); + this.groundsForTheApplicationHasBeenUpdatedFinished = page.locator('xpath=//*[@id="taskListLabel"]/dt/ccd-markdown/div/markdown/div/p[4]/img',); + this.riskAndHarmToChildrenLink = page.getByRole("link", { name: "Risk and harm to children", }); + this.allocationProposalFinished = page.locator('p').filter({ hasText: 'Allocation proposal' }).getByRole('img', { name: 'Finished' }); + this.allocationProposalHeading = page.getByRole("group", { name: "Allocation proposal" }).getByRole("heading"); + this.allocationProposalLink = page.getByRole("link", { name: "Allocation proposal", }); + this.uploadDocumentsLink = page.getByRole("link", { name: "Upload documents", }); + this.addApplicationDocsHeading = page.getByRole("heading", { name: "Application documents", }); + this.upLoadDocsInProgress = page.locator('p').filter({ hasText: 'Upload documents' }).getByRole('img', { name: 'Finished' }) + this.applicantDetailsLink = page.getByRole('link', { name: 'Applicant\'s details' }); + this.respondentsDetailsLink = page.getByRole('link', { name: 'Respondents\' details' }); + this.applicantDetailsUpdated = page.locator('p').filter({ hasText: 'Applicant\'s details' }).getByRole('img', { name: 'Information added' }); + this.childDetailsLink = page.getByRole("link", { name: 'Child\'s Details', }); + this.respondentsDetailsLink = page.getByRole('link', { name: 'Respondents\' details' }); + this.childDetailsUpdated = page.locator('p').filter({ hasText: 'Child\'s Details' }).getByRole('img', { name: 'Information added' }); + this.welshLanguageRequirements = page.getByRole('link', { name: 'Welsh language requirements' }); + this.welshLanguageReqFinished = page.locator('p:has(a[text="Welsh language requirements"]) > img[title="Finished"]'); + this.internationalElementsHeading = page.getByRole('link', { name: 'International element' }); + this.submitApplicationLink = page.getByRole('link', { name: 'Submit application' }) + this.otherProceedingsLink = page.getByRole('link', { name: "Other Proceedings", }); + this.courtServices = page.getByRole('link', { name: 'Court services'}); + this.otherPeopleInCaseLink = page.getByRole('link', { name: 'Other people to be given' }); + this.returnApplicationLink = page.getByRole('link', { name: 'Return application'}); + this.ordersAndDirectionsSoughtFinishedStatus = page.locator('p').filter({ hasText: 'Orders and directions sought' }).getByRole('img'); + + } + async groundsForTheApplication() { + + await expect(()=>{ + this.page.reload(); + expect(this.groundsForTheApplicationLink).toBeVisible(); + this.groundsForTheApplicationLink.click(); + expect( this.groundsForTheApplicationLink).toBeHidden(); + }).toPass(); + // expect(await this.groundsForTheApplicationLink).toBeVisible(); + + // await expect(this.groundsForTheApplicationHeading).toBeVisible(); + } + + async groundsForTheApplicationHasBeenUpdated() { + await expect(this.groundsForTheApplicationHasBeenUpdatedFinished).toBeVisible(); + } + + async hearingUrgency() { + await expect(() => { + expect(this.hearingUrgencyLink).toBeVisible(); + this.hearingUrgencyLink.click(); + expect(this.hearingUrgencyLink).toBeHidden(); + this.page.reload(); + + }).toPass(); + + await expect(this.hearingUrgencyHeader).toBeVisible(); + } + + async riskAndHarmToChildren() { + await expect(this.riskAndHarmToChildrenLink).toBeVisible(); + await this.riskAndHarmToChildrenLink.click(); + } + + async addApplicationDocuments() { + + await expect(()=>{ + expect(this.uploadDocumentsLink).toBeVisible(); + this.uploadDocumentsLink.click(); + expect(this.uploadDocumentsLink).toBeHidden(); + this.page.reload(); + }).toPass(); + // await expect(this.uploadDocumentsLink).toBeVisible(); + // await this.uploadDocumentsLink.click(); + } + + async addApplicationDocumentsInProgress() { + await expect(this.upLoadDocsInProgress).toBeVisible(); + } + + async applicantDetails() { + await expect(()=>{ + expect(this.applicantDetailsLink).toBeVisible(); + this.applicantDetailsLink.click(); + expect(this.applicantDetailsLink).toBeHidden(); + this.page.reload(); + }).toPass(); + // await expect(this.applicantDetailsLink).toBeVisible(); + // await this.applicantDetailsLink.click(); + } + + async applicantDetailsHasBeenUpdated() { + await expect(this.applicantDetailsUpdated).toBeVisible(); + } + + async childDetails() { + await expect(()=>{ + expect(this.childDetailsLink).toBeVisible(); + this.childDetailsLink.click(); + expect(this.childDetailsLink).toBeHidden(); + this.page.reload(); + }).toPass(); + // await expect(this.childDetailsLink).toBeVisible(); + // await this.childDetailsLink.click(); + } + + async childDetailsHasBeenUpdated() { + await expect(this.childDetailsUpdated).toBeVisible(); + } + + async respondentDetails() { + await expect(()=>{ + expect(this.respondentsDetailsLink).toBeVisible(); + this.respondentsDetailsLink.click(); + expect(this.respondentsDetailsLink).toBeHidden(); + this.page.reload(); + }).toPass(); + // await expect(this.respondentsDetailsLink).toBeVisible(); + // await this.respondentsDetailsLink.click(); + } + + async allocationProposal() { + + await expect(()=>{ + expect(this.allocationProposalLink).toBeVisible(); + this.allocationProposalLink.click(); + expect(this.allocationProposalLink).toBeHidden(); + this.page.reload(); + }).toPass(); + // await this.allocationProposalLink.click(); + // await expect(this.allocationProposalLink).toBeVisible(); + } + + async allocationProposalHasBeenUpdated() { + await expect(this.allocationProposalFinished).toBeVisible(); + } + + async otherProceedingsNeeded() { + await this.otherProceedingsLink.click(); + } + + async welshLanguageReq() { + await this.welshLanguageRequirements.click(); + } + + async welshLanguageReqUpdated() { + await expect(this.welshLanguageReqFinished).toBeVisible; + } + + async internationalElementReqUpdated() { + await expect(this.internationalElementsHeading).toBeVisible(); + await this.internationalElementsHeading.click(); + } + + async courtServicesReqUpdated() { + await expect(this.courtServices).toBeVisible(); + await this.courtServices.click(); + } + + async addOtherPeopleInCase() { + await expect(this.otherPeopleInCaseLink).toBeVisible(); + await this.otherPeopleInCaseLink.click(); + } + + async returnApplication() { + await expect(this.returnApplicationLink).toBeVisible(); + await this.returnApplicationLink.click(); + } + + async submitCase() { + await this.submitApplicationLink.click(); + } } From aac9db46953ccc8978d47f27beda4f9821096f76 Mon Sep 17 00:00:00 2001 From: prabhamuthu15 Date: Tue, 15 Apr 2025 13:35:39 +0100 Subject: [PATCH 40/47] # Conflicts: OthertogivenNoticeTest --- .../tests/others-to-be-given-notice.spec.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/playwright-e2e/tests/others-to-be-given-notice.spec.ts b/playwright-e2e/tests/others-to-be-given-notice.spec.ts index 8048e69ff45..7c9d5745c98 100644 --- a/playwright-e2e/tests/others-to-be-given-notice.spec.ts +++ b/playwright-e2e/tests/others-to-be-given-notice.spec.ts @@ -5,13 +5,13 @@ import { newSwanseaLocalAuthorityUserOne, CTSCUser} from "../settings/user-crede import { expect } from "@playwright/test"; test.describe('Others to be given notice', () => { - const dateTime = new Date().toISOString(); - let caseNumber: string; - let casename: string; + const dateTime = new Date().toISOString(); + let caseNumber: string; + let casename: string; - test.beforeEach(async () => { - caseNumber = await createCase('e2e case', newSwanseaLocalAuthorityUserOne); - }); + test.beforeEach(async () => { + caseNumber = await createCase('e2e case', newSwanseaLocalAuthorityUserOne); + }); test('Others to be given notice', async ({ page, signInPage, othersToBeGivenNotice }) => { @@ -21,10 +21,9 @@ test.describe('Others to be given notice', () => { await signInPage.login(CTSCUser.email, CTSCUser.password); await signInPage.navigateTOCaseDetails(caseNumber); - await signInPage.navigateTOCaseDetails(caseNumber); await othersToBeGivenNotice.gotoNextStep('Others to be given notice'); await othersToBeGivenNotice.othersToBeGivenNotice(); await othersToBeGivenNotice.tabNavigation('People in the case'); - await expect(page.getByText('Other person 1',{exact: true})).toBeVisible(); + await expect(page.getByText('Other people to be given notice 2',{exact: true})).toBeVisible(); }) - }); +}); From b7afc4aa0eb262b1ae90e7e604d76cbf779a73fd Mon Sep 17 00:00:00 2001 From: prabhamuthu15 Date: Tue, 15 Apr 2025 13:38:25 +0100 Subject: [PATCH 41/47] # Conflicts: NonMandatoryFieldTest --- playwright-e2e/tests/application-detail-nonmandatory.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/playwright-e2e/tests/application-detail-nonmandatory.spec.ts b/playwright-e2e/tests/application-detail-nonmandatory.spec.ts index bfd9108b873..9530dfcfee8 100644 --- a/playwright-e2e/tests/application-detail-nonmandatory.spec.ts +++ b/playwright-e2e/tests/application-detail-nonmandatory.spec.ts @@ -181,5 +181,4 @@ test.describe('Non mandatory application details before application submit', () expect(accessibilityScanResults.violations).toEqual([]); }); - }); From d303702a4b61604058a17c6fae7165e452724b32 Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Tue, 15 Apr 2025 15:48:11 +0100 Subject: [PATCH 42/47] DFPL-2360 Changes made to LA submits respondent's application --- playwright-e2e/pages/return-application.ts | 32 ++++++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/playwright-e2e/pages/return-application.ts b/playwright-e2e/pages/return-application.ts index 914cf4a9c6d..dc208b90754 100644 --- a/playwright-e2e/pages/return-application.ts +++ b/playwright-e2e/pages/return-application.ts @@ -22,6 +22,16 @@ export class ReturnApplication extends BasePage { readonly continueButton: Locator; readonly submit: Locator; respondentDetailsHeading: Locator; + readonly confirmationCheckbox: Locator; + readonly firstName: Locator; + readonly lastName: Locator; + readonly dobDay: Locator; + readonly dobMonth: Locator; + readonly dobYear: Locator; + readonly gender: Locator; + readonly difficultyCapacity: Locator; + readonly legalRepresentation: Locator; + public constructor(page: Page) { super(page); @@ -35,13 +45,22 @@ export class ReturnApplication extends BasePage { this.DoTheyHaveLegal = page.getByRole('group', { name: '*Do they have legal' }).getByLabel('No'); this.DoYouBelieveThisPerson = page.getByRole('group', { name: 'Do you believe this person' }).getByLabel('No', { exact: true }); this.DoYouNeedContactDetailsHidden = page.getByRole('group', { name: 'Do you need contact details' }).getByLabel('No'); - this.MakeChangesToAllocationProposal= page.getByRole('link', { name: 'Make changes to allocation' }); + this.MakeChangesToAllocationProposal = page.getByRole('link', { name: 'Make changes to allocation' }); this.GiveReasonsOptional = page.getByLabel('*Give reason (Optional)'); this.MakeChangesToTheRespodentDetails = page.getByRole('link', { name: 'Make changes to the respondents\' details' }); this.GiveReason = page.getByLabel('*Give reason (Optional)'); this.continueButton = page.getByRole('button', { name: 'Continue' }); this.submit = page.getByRole('button', { name: 'Submit' }); this.respondentDetailsHeading = page.getByRole("heading", { name: 'Respondents\' details' }); + this.confirmationCheckbox = page.getByLabel('I confirm that each person'); + this.firstName = page.getByLabel('First name', { exact: true }); + this.lastName = page.getByLabel('Last name', { exact: true }); + this.dobDay = page.getByLabel('Day'); + this.dobMonth = page.getByLabel('Month'); + this.dobYear = page.getByLabel('Year'); + this.gender = page.getByLabel('What is the respondent\'s gender? (Optional)'); + this.difficultyCapacity = page.getByRole('group', { name: 'Do you believe this person will have difficulty understanding what\'s happening with the case? (Optional)' }); + this.legalRepresentation = page.getByRole('group', { name: 'Do they have legal representation?' }); } async ReturnApplication() { @@ -64,8 +83,15 @@ export class ReturnApplication extends BasePage { async UpdateRespondent() { await expect(this.respondentDetailsHeading).toBeVisible(); - await this.DoTheyHaveLegal.check(); - await this.DoYouNeedContactDetailsHidden.check(); + await this.confirmationCheckbox.check(); + await this.firstName.fill('Tom'); + await this.lastName.fill('Jones'); + await this.dobDay.fill('31'); + await this.dobMonth.fill('3'); + await this.dobYear.fill('1980'); + await this.gender.selectOption('1: Male'); + await this.difficultyCapacity.getByLabel('Yes').check(); + await this.legalRepresentation.getByLabel('No').check(); await this.clickContinue(); await this.checkYourAnsAndSubmit(); From 4e719ac5a0b8dc9d239eac62ddce2d3e5df3810c Mon Sep 17 00:00:00 2001 From: prabhamuthu15 Date: Tue, 15 Apr 2025 16:02:24 +0100 Subject: [PATCH 43/47] # Conflicts: FixOthersGivenNoticeTest --- .../pages/other-people-in-the-case.ts | 80 +++++++------------ playwright-e2e/pages/start-application.ts | 2 +- .../application-detail-nonmandatory.spec.ts | 7 +- 3 files changed, 33 insertions(+), 56 deletions(-) diff --git a/playwright-e2e/pages/other-people-in-the-case.ts b/playwright-e2e/pages/other-people-in-the-case.ts index ddcc9636ebc..b0777dc161d 100644 --- a/playwright-e2e/pages/other-people-in-the-case.ts +++ b/playwright-e2e/pages/other-people-in-the-case.ts @@ -1,81 +1,59 @@ -import { type Page, type Locator, expect } from "@playwright/test"; -import { BasePage } from "./base-page"; +import {expect, type Locator, type Page} from "@playwright/test"; +import {BasePage} from "./base-page"; export class OtherPeopleInCase extends BasePage { readonly otherPeopleHeading: Locator; - readonly firstName: Locator; - readonly lastName: Locator readonly dobDay: Locator; readonly dobMonth: Locator; readonly dobYear: Locator; readonly currentAddress: Locator; - readonly addressUnknown: Locator; - readonly giveMoreDetails: Locator; readonly telephoneNumber: Locator; readonly numberConfidential: Locator; readonly relationshipToChild: Locator; readonly contactDetailsHidden: Locator; - readonly addNew: Locator; - readonly difficultyCapacity: Locator; readonly giveDetails: Locator; readonly litigation: Locator; + readonly gender: Locator; + readonly placeofBirth: Locator; + private fullName: Locator; public constructor(page: Page) { super(page); - this.otherPeopleHeading = page.getByRole("heading", { name: 'Other people to be given notice', exact: true }); - this.firstName = page.getByLabel('First name'); - this.lastName = page.getByLabel('Last name'); + this.fullName = page.getByRole('textbox', {name: 'Full name (Optional)'}); + this.otherPeopleHeading = page.getByRole("heading", {name: 'Other people in the case', exact: true}); this.dobDay = page.getByLabel('Day'); this.dobMonth = page.getByLabel('Month'); this.dobYear = page.getByLabel('Year'); - this.currentAddress = page.getByRole('group', { name: 'Current address known?' }); - this.addressUnknown = page.getByLabel('Whereabouts unknown'); - this.giveMoreDetails = page.getByLabel('Give more details'); + this.gender = page.getByLabel('Gender (Optional)'); + this.placeofBirth = page.getByRole('textbox', {name: 'Place of birth (Optional)'}); + this.currentAddress = page.getByRole('group', {name: 'Current address known?'}); this.telephoneNumber = page.getByLabel('Telephone number (Optional)'); - this.numberConfidential = page.getByRole('group', { name: 'Do you need to keep the' }); + this.numberConfidential = page.getByRole('group', {name: 'Do you need to keep the'}); this.relationshipToChild = page.getByText('What is this person\'s'); - this.contactDetailsHidden = page.getByRole('group', { name: 'Do you need contact details' }); - this.difficultyCapacity = page.getByRole('group', { name: 'Do you believe this person' }); - this.litigation = page.getByRole('group', { name: 'Do you believe this person' }).getByLabel('No', { exact: true }); - this.addNew = page.getByRole('button', { name: 'Add new' }); - this.giveDetails = page.getByRole('textbox', { name: 'Give details, including' }); + this.contactDetailsHidden = page.getByRole('group', {name: 'Do you need contact details'}); + this.litigation = page.getByRole('group', {name: 'Do you believe this person'}).getByLabel('Yes', {exact: true}); + this.giveDetails = page.getByRole('textbox', {name: 'Give details, including'}); } - async personOneToBeGivenNotice() { + + async addOtherPerson() { await expect.soft(this.otherPeopleHeading).toBeVisible(); - await this.addNew.click(); - await this.firstName.fill('John'); - await this.lastName.fill('Joe') + await this.fullName.first().fill('Sam Daniel'); await this.dobDay.fill('11'); await this.dobMonth.fill('10'); - await this.dobYear.fill('1990') - await this.currentAddress.getByLabel('No').click(); - await this.currentAddress.getByLabel('No').click(); - await this.addressUnknown.click(); - await this.giveMoreDetails.fill('test'); - await this.telephoneNumber.fill('0123456789'); - await this.numberConfidential.getByLabel('No').check(); - await this.relationshipToChild.fill('uncle') - await this.difficultyCapacity.getByLabel('No', { exact: true }).check(); - } + await this.dobYear.fill('1990'); + await this.gender.selectOption('Female'); + await this.placeofBirth.fill('UK'); + await this.currentAddress.getByLabel('Yes').click(); + await this.enterPostCode('WD3'); + await this.telephoneNumber.fill('232543654645'); + await this.contactDetailsHidden.getByLabel('No').check(); + await this.relationshipToChild.fill('Aunty'); + await this.litigation.check(); + await this.giveDetails.fill('No able to travel'); + await this.clickContinue(); + await this.checkYourAnsAndSubmit(); - async personTwoToBeGivenNotice() { - await this.addNew.nth(1).click(); - await this.page.locator('#othersV2_1_firstName').fill('Jane'); - await this.page.locator('#othersV2_1_lastName').fill('Law'); - await this.page.locator('#DOB-day').nth(1).fill('11'); - await this.page.locator('#DOB-month').nth(1).fill('4'); - await this.page.locator('#DOB-year').nth(1).fill('1980'); - await this.page.getByRole('radio', { name: 'No', exact: true }).nth(3).click(); - await this.page.getByRole('radio', { name: 'No', exact: true }).nth(3).click(); - await this.page.locator('[id="othersV2_1_addressNotKnowReason-No\\ fixed\\ abode"]').check(); - await this.page.locator('#othersV2_1_telephone').fill('00000000000'); - await this.page.locator('#othersV2_1_childInformation').fill('Uncle'); - await this.page.locator('#othersV2_1_litigationIssues-NO').dblclick(); } - async continueAndCheck() { - await this.continueButton.click(); - await this.saveAndContinue.click(); - } } diff --git a/playwright-e2e/pages/start-application.ts b/playwright-e2e/pages/start-application.ts index ccde2f6c743..9c71abc071e 100644 --- a/playwright-e2e/pages/start-application.ts +++ b/playwright-e2e/pages/start-application.ts @@ -63,7 +63,7 @@ export class StartApplication extends BasePage { this.submitApplicationLink = page.getByRole('link', { name: 'Submit application' }) this.otherProceedingsLink = page.getByRole('link', { name: "Other Proceedings", }); this.courtServices = page.getByRole('link', { name: 'Court services'}); - this.otherPeopleInCaseLink = page.getByRole('link', { name: 'Other people to be given' }); + this.otherPeopleInCaseLink = page.getByRole('link', { name: 'Other people in the case' }) ; this.returnApplicationLink = page.getByRole('link', { name: 'Return application'}); this.ordersAndDirectionsSoughtFinishedStatus = page.locator('p').filter({ hasText: 'Orders and directions sought' }).getByRole('img'); diff --git a/playwright-e2e/tests/application-detail-nonmandatory.spec.ts b/playwright-e2e/tests/application-detail-nonmandatory.spec.ts index 9530dfcfee8..248c41c987c 100644 --- a/playwright-e2e/tests/application-detail-nonmandatory.spec.ts +++ b/playwright-e2e/tests/application-detail-nonmandatory.spec.ts @@ -163,10 +163,9 @@ test.describe('Non mandatory application details before application submit', () await signInPage.isSignedIn(); await signInPage.navigateTOCaseDetails(caseNumber); //add other people in the case - await startApplication.addOtherPeopleInCase() - await otherPeopleInCase.personOneToBeGivenNotice(); - await otherPeopleInCase.personTwoToBeGivenNotice(); - await otherPeopleInCase.continueAndCheck(); + await startApplication.addOtherPeopleInCase(); + await otherPeopleInCase.addOtherPerson(); + await expect( otherPeopleInCase.page.getByRole('paragraph').filter({ hasText: 'Other people in the case' }).getByRole('img', { name: 'In progress' })).toBeVisible(); const accessibilityScanResults = await makeAxeBuilder() // Automatically uses the shared AxeBuilder configuration, From 1c698fc577c84de8c73b6d188cb8f128949d645c Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Tue, 15 Apr 2025 16:16:58 +0100 Subject: [PATCH 44/47] simplify EventEnablingCondition --- .../CareSupervision/court-admin.json | 7 +++++++ .../CaseEvent/CareSupervision/MultiState.json | 4 ++-- .../fpl/controllers/support/MigrateCaseController.java | 10 ++-------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json b/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json index fc64997faf3..f1ea0fc60ff 100644 --- a/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json +++ b/ccd-definition/AuthorisationCaseField/CareSupervision/court-admin.json @@ -13,6 +13,13 @@ "UserRole": "caseworker-publiclaw-courtadmin", "CRUD": "CRUD" }, + { + "LiveFrom": "01/01/2017", + "CaseTypeID": "CARE_SUPERVISION_EPO", + "CaseFieldID": "representativeType", + "UserRole": "caseworker-publiclaw-courtadmin", + "CRUD": "CRUD" + }, { "LiveFrom": "01/01/2017", "CaseTypeID": "CARE_SUPERVISION_EPO", diff --git a/ccd-definition/CaseEvent/CareSupervision/MultiState.json b/ccd-definition/CaseEvent/CareSupervision/MultiState.json index 76e3440b8b1..21d921e44a6 100644 --- a/ccd-definition/CaseEvent/CareSupervision/MultiState.json +++ b/ccd-definition/CaseEvent/CareSupervision/MultiState.json @@ -350,7 +350,7 @@ "CallBackURLAboutToStartEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-start", "CallBackURLAboutToSubmitEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/enter-respondents/about-to-submit", "CallBackURLSubmittedEvent": "${CCD_DEF_CASE_SERVICE_BASE_URL}/callback/update-task-list/submitted", - "EventEnablingCondition": "(representativeType != \"RESPONDENT_SOLICITOR\" AND representativeType != \"CHILD_SOLICITOR\") OR hasRespondentLA = \"NO\"", + "EventEnablingCondition": "hasRespondentLA = \"NO\"", "ShowSummary": "Y", "ShowEventNotes": "N", "EndButtonLabel": "Save and continue" @@ -676,7 +676,7 @@ "ShowSummary": "Y", "ShowEventNotes": "Y", "EndButtonLabel": "Save and continue", - "EventEnablingCondition": "(representativeType != \"RESPONDENT_SOLICITOR\" AND representativeType != \"CHILD_SOLICITOR\") OR hasRespondentLA = \"NO\"", + "EventEnablingCondition": "hasRespondentLA = \"NO\"", "Comment": "Can be removed when respondent journey toggled on (replace with enterRespondents)" }, { diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java index 21761275ee8..faf3a38ec82 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java @@ -110,14 +110,8 @@ private void run2640(CaseDetails caseDetails) { private void run2360(CaseDetails caseDetails) { final String migrationId = "DFPL-2360"; - CaseData caseData = getCaseData(caseDetails); - if (!RepresentativeType.LOCAL_AUTHORITY.equals(caseData.getRepresentativeType())) { - caseDetails.getData().put("hasRespondentLA", YesNo.NO); - } else { - log.info("Migration {id = {}, case reference = {}}, " - + "skipping case as has representativeType=LOCAL_AUTHORITY", - migrationId, caseData.getId()); - } + // all existing cases need this field now, new cases will be populated in case initiation + caseDetails.getData().put("hasRespondentLA", YesNo.NO); } private void run2487(CaseDetails caseDetails) { From e4cf7c6d978398a1bb710ff95680a05c5fa9be00 Mon Sep 17 00:00:00 2001 From: Daniel Catchpole Date: Tue, 15 Apr 2025 16:17:10 +0100 Subject: [PATCH 45/47] checkstyle --- .../reform/fpl/controllers/support/MigrateCaseController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java index faf3a38ec82..8cba9d032b6 100644 --- a/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java +++ b/service/src/main/java/uk/gov/hmcts/reform/fpl/controllers/support/MigrateCaseController.java @@ -12,7 +12,6 @@ import uk.gov.hmcts.reform.ccd.client.model.CallbackRequest; import uk.gov.hmcts.reform.ccd.client.model.CaseDetails; import uk.gov.hmcts.reform.fpl.controllers.CallbackController; -import uk.gov.hmcts.reform.fpl.enums.RepresentativeType; import uk.gov.hmcts.reform.fpl.enums.YesNo; import uk.gov.hmcts.reform.fpl.model.CaseData; import uk.gov.hmcts.reform.fpl.service.CaseConverter; From 0b06a2d6fa3b39d09963ed8db917da20e55df7cc Mon Sep 17 00:00:00 2001 From: prabhamuthu15 Date: Tue, 15 Apr 2025 16:39:19 +0100 Subject: [PATCH 46/47] # Conflicts: OthersTogivenNoticeTest --- .../pages/others-to-be-given-notice.ts | 114 ++++++++---------- .../tests/others-to-be-given-notice.spec.ts | 3 +- 2 files changed, 55 insertions(+), 62 deletions(-) diff --git a/playwright-e2e/pages/others-to-be-given-notice.ts b/playwright-e2e/pages/others-to-be-given-notice.ts index eb7af3ac3e8..ad059c2090b 100644 --- a/playwright-e2e/pages/others-to-be-given-notice.ts +++ b/playwright-e2e/pages/others-to-be-given-notice.ts @@ -2,76 +2,68 @@ import { type Page, type Locator, expect } from "@playwright/test"; import { BasePage } from "./base-page"; export class OthersToBeGivenNotice extends BasePage { - readonly inputFirstName: Locator; - readonly inputLastName: Locator - readonly inputDobDay: Locator; - readonly inputDobMonth: Locator; - readonly inputDobYear: Locator; + readonly othersToBeGivenNoticeHeading: Locator; + readonly fullName: Locator; + readonly dobDay: Locator; + readonly dobMonth: Locator; + readonly dobYear: Locator; + readonly gender: Locator; + readonly placeOfBirth: Locator; readonly currentAddress: Locator; - readonly currentAddressNo: Locator; - readonly addressUnknown: Locator; - readonly giveMoreDetails: Locator; + readonly reasonUnknownAddress: Locator; readonly telephoneNumber: Locator; - readonly numberConfidential: Locator; readonly relationshipToChild: Locator; readonly contactDetailsHidden: Locator; readonly addNew: Locator; - readonly difficultyCapacity: Locator; - readonly giveDetails: Locator; - readonly litigation: Locator; + readonly hiddenDetails: Locator; public constructor(page: Page) { super(page); - this.inputFirstName = page.getByLabel('First name'); - this.inputLastName = page.getByLabel('Last name'); - this.inputDobDay = page.getByLabel('Day'); - this.inputDobMonth = page.getByLabel('Month'); - this.inputDobYear = page.getByLabel('Year'); - this.currentAddress = page.getByRole('group', { name: 'Current address known?' }); - this.currentAddressNo = this.currentAddress.getByLabel('No'); - this.addressUnknown = page.getByLabel('Whereabouts unknown'); - this.giveMoreDetails = page.getByLabel('Give more details'); - this.telephoneNumber = page.getByLabel('Telephone number (Optional)'); - this.numberConfidential = page.getByRole('group', { name: 'Do you need to keep the' }); - this.relationshipToChild = page.getByText('What is this person\'s'); - this.contactDetailsHidden = page.getByRole('group', { name: 'Do you need contact details' }); - this.difficultyCapacity = page.getByRole('group', { name: 'Do you believe this person' }); - this.litigation = page.getByRole('group', { name: 'Do you believe this person' }).getByLabel('No', { exact: true }); - this.addNew = page.getByRole('button', { name: 'Add new' }); - this.giveDetails = page.getByRole('textbox', { name: 'Give details, including' }); + this.othersToBeGivenNoticeHeading = page.getByRole("heading", {name: "Other people in the case", exact: true}); + this.fullName = page.getByLabel('Full name (Optional)'); + this.dobDay = page.getByLabel('Day'); + this.dobMonth = page.getByLabel('Month'); + this.dobYear = page.getByLabel('Year'); + this.gender = page.getByLabel('Gender (Optional)'); + this.placeOfBirth = page.getByLabel('Place of birth (Optional)'); + this.currentAddress = page.getByRole('group', {name: '*Current address known? ('}); + this.reasonUnknownAddress = page.getByLabel('*Reason the address is not'); + this.telephoneNumber = page.getByLabel('Telephone number (Optional)'); + this.relationshipToChild = page.getByText('What is this person\'s relationship to the child or children in this case? (Optional)'); + this.contactDetailsHidden = page.getByRole('group', {name: 'Do you need contact details'}); + this.addNew = page.getByRole('button', {name: 'Add new'}); + this.hiddenDetails = page.locator('#others_additionalOthers_0_detailsHidden_No'); } - async othersToBeGivenNotice() { - await this.page.pause(); - await this.addNew.click(); - await this.inputFirstName.fill('James'); - await this.inputLastName.fill('Trace'); - await this.inputDobDay.fill('12') - await this.inputDobMonth.fill('05'); - await this.inputDobYear.fill('1988'); - await this.currentAddress.getByLabel('No').click(); - await this.currentAddress.getByLabel('No').click(); - await this.currentAddressNo.click(); - await this.currentAddressNo.click(); - await this.addressUnknown.click(); - await this.giveMoreDetails.fill('testing'); - await this.telephoneNumber.fill('03456789000'); - await this.numberConfidential.getByLabel('No').check(); - await this.relationshipToChild.fill('uncle') - await this.difficultyCapacity.getByLabel('No', { exact: true }).check(); - await this.addNew.nth(1).click(); - await this.page.locator('#othersV2_1_firstName').fill('Tim'); - await this.page.locator('#othersV2_1_lastName').fill('kim'); - await this.page.locator('#DOB-day').nth(1).fill('4'); - await this.page.locator('#DOB-month').nth(1).fill('4'); - await this.page.locator('#DOB-year').nth(1).fill('1980'); - await this.page.locator ('#othersV2_1_addressKnowV2-No').click(); - await this.page.locator ('#othersV2_1_addressKnowV2-No').click(); - await this.page.locator('[id="othersV2_1_addressNotKnowReason-No\\ fixed\\ abode"]').click(); - await this.page.locator('#othersV2_1_telephone').fill('00000000000'); - await this.page.locator('#othersV2_1_childInformation').fill('Uncle'); - await this.page.locator('#othersV2_1_litigationIssues-NO').dblclick(); - await this.submit.click(); - await this.saveAndContinue.click(); + + async othersToBeGivenNotice() + { + await expect(this.othersToBeGivenNoticeHeading).toBeVisible; + await this.fullName.fill("John Doe"); + await this.dobDay.fill("1"); + await this.dobMonth.fill("10"); + await this.dobYear.fill("1990") + await this.gender.selectOption('1: Male'); + await this.placeOfBirth.fill("London"); + await this.currentAddress.getByLabel('No').check(); + await this.reasonUnknownAddress.selectOption('No fixed abode'); + await this.telephoneNumber.fill("0123456789") + await this.relationshipToChild.fill("uncle") + await this.contactDetailsHidden.getByLabel('No').check(); + await this.page.getByLabel('Don\'t know').check(); + await this.addNew.click(); + await this.page.locator('#others_additionalOthers_0_name').fill('John Grey'); + await this.page.locator('#others_additionalOthers #DOB-day').fill("12"); + await this.page.locator('#others_additionalOthers #DOB-month').fill("11"); + await this.page.locator('#others_additionalOthers #DOB-year').fill("1999"); + await this.page.locator('#others_additionalOthers_0_gender').selectOption('2: Female'); + await this.page.locator('#others_additionalOthers_0_birthPlace').fill("London"); + await this.page.locator('#others_additionalOthers_0_addressKnowV2-No').check(); + await this.page.locator('#others_additionalOthers_0_addressNotKnowReason').selectOption('No fixed abode'); + await this.page.locator('#others_additionalOthers_0_telephone').fill("0000000000"); + await this.page.locator('#others_additionalOthers_0_childInformation').fill('test'); + await this.page.locator('#others_additionalOthers_0_litigationIssues-NO').check(); + await this.submit.click(); + await this.saveAndContinue.click(); } }; diff --git a/playwright-e2e/tests/others-to-be-given-notice.spec.ts b/playwright-e2e/tests/others-to-be-given-notice.spec.ts index 7c9d5745c98..2f85c27b7a5 100644 --- a/playwright-e2e/tests/others-to-be-given-notice.spec.ts +++ b/playwright-e2e/tests/others-to-be-given-notice.spec.ts @@ -24,6 +24,7 @@ test.describe('Others to be given notice', () => { await othersToBeGivenNotice.gotoNextStep('Others to be given notice'); await othersToBeGivenNotice.othersToBeGivenNotice(); await othersToBeGivenNotice.tabNavigation('People in the case'); - await expect(page.getByText('Other people to be given notice 2',{exact: true})).toBeVisible(); + await expect(page.getByText('Person 1',{exact: true})).toBeVisible(); + await expect(page.getByText('John Doe')).toBeVisible(); }) }); From 604421aa3c7fe1aba223738efd2651d2f2482ed7 Mon Sep 17 00:00:00 2001 From: Charles Braimah <41795070+Braimah101@users.noreply.github.com> Date: Tue, 15 Apr 2025 16:10:18 +0100 Subject: [PATCH 47/47] DFPL-2360 Changes to made to Change in Respondent details --- .../pages/change-other-to-respondent.ts | 25 ++++--------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/playwright-e2e/pages/change-other-to-respondent.ts b/playwright-e2e/pages/change-other-to-respondent.ts index 08d954c4933..7651d8386bd 100644 --- a/playwright-e2e/pages/change-other-to-respondent.ts +++ b/playwright-e2e/pages/change-other-to-respondent.ts @@ -11,12 +11,7 @@ export class ChangeOtherToRespondent extends BasePage { readonly dobYear: Locator; readonly gender: Locator; readonly placeOfBirth: Locator; - readonly currentAddress: Locator; - readonly reasonUnknownAddress: Locator; - readonly telephoneNumber: Locator; - readonly relationshipToChild: Locator; - readonly abilityToTakeProceeding: Locator; - readonly anyLegalRepresentation: Locator; + readonly legalRepresentation: Locator; constructor(page: Page) { super(page); @@ -27,14 +22,9 @@ export class ChangeOtherToRespondent extends BasePage { this.dobDay = page.getByLabel('Day'); this.dobMonth = page.getByLabel('Month'); this.dobYear = page.getByLabel('Year'); - this.gender = page.getByLabel('Gender (Optional)'); + this.gender = page.getByLabel('What is the respondent\'s gender? (Optional)'); this.placeOfBirth = page.getByLabel('Place of birth (Optional)'); - this.currentAddress = page.getByRole('group', { name: '*Current address known?' }); - this.reasonUnknownAddress = page.getByLabel('*Reason the address is not'); - this.telephoneNumber = page.getByRole('group', { name: 'Telephone (Optional)' }).locator('#transformedRespondent_party_telephoneNumber_telephoneNumber'); - this.relationshipToChild = page.getByLabel('What is the respondent\'s relationship to the child or children in this case? (Optional)'); - this.abilityToTakeProceeding = page.getByRole('group', { name: 'Do you believe this person will have problems with litigation capacity' }); - this.anyLegalRepresentation = page.getByRole('group', { name: 'Do they have legal representation? (Optional)' }); + this.legalRepresentation = page.getByRole('group', { name: 'Do they have legal representation?' }); } async ChangeOtherToRespondent() { @@ -45,14 +35,9 @@ export class ChangeOtherToRespondent extends BasePage { await this.lastName.fill('John'); await this.dobDay.fill('11'); await this.dobMonth.fill('04'); - await this.dobYear.fill('2000'); + await this.dobYear.fill('1980'); await this.gender.selectOption('1: Male'); - await this.currentAddress.getByLabel('No').check(); - await this.reasonUnknownAddress.selectOption('1: No fixed abode'); - await this.telephoneNumber.fill("00000000000"); - await this.relationshipToChild.fill("Uncle"); - await this.abilityToTakeProceeding.getByLabel('No',{exact: true}).check(); - await this.anyLegalRepresentation.getByLabel('No',{exact: true}).check(); + await this.legalRepresentation.getByLabel('No').check(); await this.continueButton.click(); await this.checkYourAnsAndSubmit(); }