Skip to content

Commit

Permalink
CIV-14300 & 14166 Trial arrangements task list doesn't update to done…
Browse files Browse the repository at this point in the history
… when there is an LR in the case
  • Loading branch information
kannan-v-hmcts committed Jul 26, 2024
1 parent 716e093 commit d8f848f
Show file tree
Hide file tree
Showing 8 changed files with 172 additions and 76 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,43 +21,62 @@ public class TrialArrangementsNotifyOtherPartyScenarioTest extends CaseProgressi

@Test
void should_create_notification_for_claimant_when_defendant_finalises_trial_arrangements() throws Exception {
String caseId = "10002348";
CaseData caseData = createCaseData(caseId, YesOrNo.NO);

handler.handle(callbackParams(caseData));

verifyNotificationCreated(caseId);
verifyTaskStatus(caseId, "DEFENDANT", TaskStatus.DONE);
}

@Test
void should_update_task_list_for_defendant_when_defendant_finalises_trial_arrangements() throws Exception {
String caseId = "10002348";
CaseData caseData = CaseDataBuilder.builder().atStateAwaitingResponseNotFullDefenceReceived().build()
CaseData caseData = createCaseData(caseId, YesOrNo.YES);

handler.handle(callbackParams(caseData));

verifyNotificationNotCreated(caseId);
verifyTaskStatus(caseId, "DEFENDANT", TaskStatus.DONE);
}

private CaseData createCaseData(String caseId, YesOrNo applicant1Represented) {
return CaseDataBuilder.builder().atStateAwaitingResponseNotFullDefenceReceived().build()
.toBuilder()
.legacyCaseReference("reference")
.ccdCaseReference(Long.valueOf(caseId))
.applicant1Represented(YesOrNo.NO)
.applicant1Represented(applicant1Represented)
.respondent1(Party.builder().type(Party.Type.INDIVIDUAL).build())
.build();
}

handler.handle(callbackParams(caseData));

//Verify Notification is created
private void verifyNotificationCreated(String caseId) throws Exception {
doGet(BEARER_TOKEN, GET_NOTIFICATIONS_URL, caseId, "CLAIMANT")
.andExpect(status().isOk())
.andExpectAll(
status().is(HttpStatus.OK.value()),
jsonPath("$[0].titleEn").value("The other side has confirmed their trial arrangements"),
jsonPath("$[0].titleCy").value("Mae'r parti arall wedi cadarnhau eu trefniadau treial"),
jsonPath("$[0].descriptionEn")
.value(
"<p class=\"govuk-body\">You can <a href=\"{VIEW_ORDERS_AND_NOTICES_REDIRECT}\" class=\"govuk-link\">view the arrangements that they've confirmed</a>.</p>"),
jsonPath("$[0].descriptionCy")
.value(
"<p class=\"govuk-body\">Gallwch <a href=\"{VIEW_ORDERS_AND_NOTICES_REDIRECT}\" class=\"govuk-link\">weld y trefniadau y maent wedi'u cadarnhau</a>.</p>")
jsonPath("$[0].descriptionEn").value("<p class=\"govuk-body\">You can <a href=\"{VIEW_ORDERS_AND_NOTICES_REDIRECT}\" class=\"govuk-link\">view the arrangements that they've confirmed</a>.</p>"),
jsonPath("$[0].descriptionCy").value("<p class=\"govuk-body\">Gallwch <a href=\"{VIEW_ORDERS_AND_NOTICES_REDIRECT}\" class=\"govuk-link\">weld y trefniadau y maent wedi'u cadarnhau</a>.</p>")
);
}

private void verifyNotificationNotCreated(String caseId) throws Exception {
doGet(BEARER_TOKEN, GET_NOTIFICATIONS_URL, caseId, "CLAIMANT")
.andExpect(status().isOk())
.andExpect(jsonPath("$").isEmpty());
}

doGet(BEARER_TOKEN, GET_TASKS_ITEMS_URL, caseId, "DEFENDANT")
private void verifyTaskStatus(String caseId, String role, TaskStatus status) throws Exception {
doGet(BEARER_TOKEN, GET_TASKS_ITEMS_URL, caseId, role)
.andExpectAll(
status().is(HttpStatus.OK.value()),
jsonPath("$[0].reference").value(caseId.toString()),
jsonPath("$[0].taskNameEn").value(
"<a>Add the trial arrangements</a>"),
jsonPath("$[0].currentStatusEn").value(TaskStatus.DONE.getName()),
jsonPath("$[0].taskNameCy").value(
"<a>Ychwanegu trefniadau'r treial</a>"),
jsonPath("$[0].currentStatusCy").value(TaskStatus.DONE.getWelshName())
jsonPath("$[0].reference").value(caseId),
jsonPath("$[0].taskNameEn").value("<a>Add the trial arrangements</a>"),
jsonPath("$[0].currentStatusEn").value(status.getName()),
jsonPath("$[0].taskNameCy").value("<a>Ychwanegu trefniadau'r treial</a>"),
jsonPath("$[0].currentStatusCy").value(status.getWelshName())
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,51 +13,69 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

public class TrialArrangementsNotifyOtherPartyDefendantScenarioTest
extends CaseProgressionDashboardBaseIntegrationTest {
public class TrialArrangementsNotifyOtherPartyDefendantScenarioTest extends CaseProgressionDashboardBaseIntegrationTest {

@Autowired
private TrialArrangementsNotifyOtherPartyDefendantNotificationHandler handler;

@Test
void should_create_notification_for_defendant_when_claimant_finalises_trial_arrangements() throws Exception {
String caseId = "10002348";
CaseData caseData = createCaseData(caseId, YesOrNo.NO);

handler.handle(callbackParams(caseData));

verifyNotificationCreated(caseId, "DEFENDANT");
verifyTaskStatus(caseId, "CLAIMANT", TaskStatus.DONE);
}

@Test
void should_update_task_list_for_claimant_when_claimant_finalises_trial_arrangements() throws Exception {
String caseId = "10002348";
CaseData caseData = CaseDataBuilder.builder().atStateAwaitingResponseNotFullDefenceReceived().build()
CaseData caseData = createCaseData(caseId, YesOrNo.NO);

handler.handle(callbackParams(caseData));

verifyNotificationNotCreated(caseId, "DEFENDANT");
verifyTaskStatus(caseId, "CLAIMANT", TaskStatus.DONE);
}

private CaseData createCaseData(String caseId, YesOrNo applicant1Represented) {
return CaseDataBuilder.builder().atStateAwaitingResponseNotFullDefenceReceived().build()
.toBuilder()
.legacyCaseReference("reference")
.ccdCaseReference(Long.valueOf(caseId))
.applicant1Represented(YesOrNo.NO)
.applicant1Represented(applicant1Represented)
.respondent1Represented(YesOrNo.NO)
.build();
}

handler.handle(callbackParams(caseData));

//Verify Notification is created
doGet(BEARER_TOKEN, GET_NOTIFICATIONS_URL, caseId, "DEFENDANT")
private void verifyNotificationCreated(String caseId, String role) throws Exception {
doGet(BEARER_TOKEN, GET_NOTIFICATIONS_URL, caseId, role)
.andExpect(status().isOk())
.andExpectAll(
status().is(HttpStatus.OK.value()),
jsonPath("$[0].titleEn").value("The other side has confirmed their trial arrangements"),
jsonPath("$[0].titleCy").value("Mae'r parti arall wedi cadarnhau eu trefniadau treial"),
jsonPath("$[0].descriptionEn")
.value(
"<p class=\"govuk-body\">You can <a href=\"{VIEW_ORDERS_AND_NOTICES_REDIRECT}\" class=\"govuk-link\">view the arrangements that they've confirmed</a>.</p>"),
jsonPath("$[0].descriptionCy")
.value(
"<p class=\"govuk-body\">Gallwch <a href=\"{VIEW_ORDERS_AND_NOTICES_REDIRECT}\" class=\"govuk-link\">weld y trefniadau y maent wedi'u cadarnhau</a>.</p>")
jsonPath("$[0].descriptionEn").value("<p class=\"govuk-body\">You can <a href=\"{VIEW_ORDERS_AND_NOTICES_REDIRECT}\" class=\"govuk-link\">view the arrangements that they've confirmed</a>.</p>"),
jsonPath("$[0].descriptionCy").value("<p class=\"govuk-body\">Gallwch <a href=\"{VIEW_ORDERS_AND_NOTICES_REDIRECT}\" class=\"govuk-link\">weld y trefniadau y maent wedi'u cadarnhau</a>.</p>")
);
}

private void verifyNotificationNotCreated(String caseId, String role) throws Exception {
doGet(BEARER_TOKEN, GET_NOTIFICATIONS_URL, caseId, role)
.andExpect(status().isOk())
.andExpect(jsonPath("$").isEmpty());
}

doGet(BEARER_TOKEN, GET_TASKS_ITEMS_URL, caseId, "CLAIMANT")
private void verifyTaskStatus(String caseId, String role, TaskStatus status) throws Exception {
doGet(BEARER_TOKEN, GET_TASKS_ITEMS_URL, caseId, role)
.andExpectAll(
status().is(HttpStatus.OK.value()),
jsonPath("$[0].reference").value(caseId.toString()),
jsonPath("$[0].taskNameEn").value(
"<a>Add the trial arrangements</a>"),
jsonPath("$[0].currentStatusEn").value(TaskStatus.DONE.getName()),
jsonPath("$[0].taskNameCy").value(
"<a>Ychwanegu trefniadau'r treial</a>"),
jsonPath("$[0].currentStatusCy").value(TaskStatus.DONE.getWelshName())
jsonPath("$[0].reference").value(caseId),
jsonPath("$[0].taskNameEn").value("<a>Add the trial arrangements</a>"),
jsonPath("$[0].currentStatusEn").value(status.getName()),
jsonPath("$[0].taskNameCy").value("<a>Ychwanegu trefniadau'r treial</a>"),
jsonPath("$[0].currentStatusCy").value(status.getWelshName())
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,9 @@ public enum DashboardScenarios {
SCENARIO_AAA6_UPDATE_DASHBOARD_DEFENDANT_TASK_LIST_UPLOAD_DOCUMENTS_FINAL_ORDERS("Scenario.AAA6.Update.Defendant.TaskList.UploadDocuments.FinalOrders"),
SCENARIO_AAA6_UPDATE_DASHBOARD_CLAIMANT_TASK_LIST_UPLOAD_DOCUMENTS_FINAL_ORDERS("Scenario.AAA6.Update.Claimant.TaskList.UploadDocuments.FinalOrders"),
SCENARIO_AAA6_DECISION_REQUEST_FOR_RECONSIDERATION_CLAIMANT("Scenario.AAA6.CP.ReconDecisionMade.Claimant"),
SCENARIO_AAA6_DECISION_REQUEST_FOR_RECONSIDERATION_DEFENDANT("Scenario.AAA6.CP.ReconDecisionMade.Defendant");
SCENARIO_AAA6_DECISION_REQUEST_FOR_RECONSIDERATION_DEFENDANT("Scenario.AAA6.CP.ReconDecisionMade.Defendant"),
SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_REQUIRED_LR_CLAIMANT("Scenario.AAA6.CP.Trial.Arrangements.Required.Lr.Claimant"),
SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_REQUIRED_LR_DEFENDANT("Scenario.AAA6.CP.Trial.Arrangements.Required.Lr.Defendant");

private final String scenario;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import static uk.gov.hmcts.reform.civil.callback.CaseEvent.CREATE_DASHBOARD_NOTIFICATION_TRIAL_ARRANGEMENTS_NOTIFY_CLAIMANT;
import static uk.gov.hmcts.reform.civil.handler.callback.camunda.dashboardnotifications.DashboardScenarios.SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_NOTIFY_OTHER_PARTY_CLAIMANT;
import static uk.gov.hmcts.reform.civil.handler.callback.camunda.dashboardnotifications.DashboardScenarios.SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_REQUIRED_LR_CLAIMANT;

@Service
public class TrialArrangementsNotifyOtherPartyNotificationHandler extends CaseProgressionDashboardCallbackHandler {
Expand All @@ -39,11 +40,8 @@ public List<CaseEvent> handledEvents() {

@Override
public String getScenario(CaseData caseData) {
return SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_NOTIFY_OTHER_PARTY_CLAIMANT.getScenario();
}

@Override
public boolean shouldRecordScenario(CaseData caseData) {
return caseData.isApplicantNotRepresented();
return caseData.isApplicantNotRepresented()
? SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_NOTIFY_OTHER_PARTY_CLAIMANT.getScenario()
: SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_REQUIRED_LR_CLAIMANT.getScenario();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import static uk.gov.hmcts.reform.civil.callback.CaseEvent.CREATE_DASHBOARD_NOTIFICATION_TRIAL_ARRANGEMENTS_NOTIFY_DEFENDANT;
import static uk.gov.hmcts.reform.civil.handler.callback.camunda.dashboardnotifications.DashboardScenarios.SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_NOTIFY_OTHER_PARTY_DEFENDANT;
import static uk.gov.hmcts.reform.civil.handler.callback.camunda.dashboardnotifications.DashboardScenarios.SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_REQUIRED_LR_DEFENDANT;

@Service
public class TrialArrangementsNotifyOtherPartyDefendantNotificationHandler extends CaseProgressionDashboardCallbackHandler {
Expand All @@ -39,11 +40,8 @@ public List<CaseEvent> handledEvents() {

@Override
public String getScenario(CaseData caseData) {
return SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_NOTIFY_OTHER_PARTY_DEFENDANT.getScenario();
}

@Override
public boolean shouldRecordScenario(CaseData caseData) {
return caseData.isRespondent1NotRepresented();
return caseData.isRespondent1NotRepresented()
? SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_NOTIFY_OTHER_PARTY_DEFENDANT.getScenario()
: SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_REQUIRED_LR_DEFENDANT.getScenario();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* Add scenario
*/
INSERT INTO dbs.scenario (name, notifications_to_delete, notifications_to_create)
VALUES ('Scenario.AAA6.CP.Trial.Arrangements.Required.Lr.Claimant',
'{"Notice.AAA6.CP.Trial.Arrangements.Required.Defendant"}',
'{}');

INSERT INTO dbs.scenario (name, notifications_to_delete, notifications_to_create)
VALUES ('Scenario.AAA6.CP.Trial.Arrangements.Required.Lr.Defendant',
'{"Notice.AAA6.CP.Trial.Arrangements.Required.Claimant"}',
'{}');



INSERT INTO dbs.task_item_template (task_name_en, category_en, task_name_cy, category_cy, template_name,
scenario_name, task_status_sequence, role, task_order)
values ('<a>Add the trial arrangements</a>', 'Hearing' ,'<a>Ychwanegu trefniadau''r treial</a>',
'Gwrandawiad', 'Hearing.Arrangements.Add', 'Scenario.AAA6.CP.Trial.Arrangements.Required.Lr.Claimant', '{7, 7}', 'DEFENDANT', 11);

INSERT INTO dbs.task_item_template (task_name_en, category_en, task_name_cy, category_cy, template_name,
scenario_name, task_status_sequence, role, task_order)
values ('<a>Add the trial arrangements</a>', 'Hearing' ,'<a>Ychwanegu trefniadau''r treial</a>',
'Gwrandawiad', 'Hearing.Arrangements.Add', 'Scenario.AAA6.CP.Trial.Arrangements.Required.Lr.Defendant', '{7, 7}', 'CLAIMANT', 11);
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
Expand All @@ -23,6 +25,7 @@
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Optional;
import java.util.stream.Stream;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
Expand All @@ -31,9 +34,11 @@
import static org.mockito.Mockito.when;
import static uk.gov.hmcts.reform.civil.callback.CallbackType.ABOUT_TO_SUBMIT;
import static uk.gov.hmcts.reform.civil.callback.CaseEvent.CREATE_DASHBOARD_NOTIFICATION_TRIAL_ARRANGEMENTS_NOTIFY_CLAIMANT;
import static uk.gov.hmcts.reform.civil.handler.callback.camunda.dashboardnotifications.DashboardScenarios.SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_NOTIFY_OTHER_PARTY_CLAIMANT;
import static uk.gov.hmcts.reform.civil.handler.callback.camunda.dashboardnotifications.DashboardScenarios.SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_REQUIRED_LR_CLAIMANT;

@ExtendWith(MockitoExtension.class)
class TrialArrangementsNotifyOtherPartyNotificationHandlerTest extends BaseCallbackHandlerTest {
class TrialArrangementsNotifyOtherPartyNotificationHandlerTest extends BaseCallbackHandlerTest {

@Mock
private DashboardApiClient dashboardApiClient;
Expand Down Expand Up @@ -65,14 +70,9 @@ void shouldReturnCorrectCamundaActivityId_whenInvoked() {
@Nested
class AboutToSubmitCallback {

@Test
void shouldRecordScenario_whenInvoked() {
CaseData caseData = CaseDataBuilder.builder().atStateClaimSubmittedSmallClaim()
.caseDataLip(CaseDataLiP.builder().applicant1SettleClaim(YesOrNo.YES)
.applicant1ClaimSettledDate(
LocalDate.now()).build())
.applicant1Represented(YesOrNo.NO).build();

@ParameterizedTest
@MethodSource("provideCaseData")
void shouldRecordScenario_whenInvoked(CaseData caseData, String expectedScenario) {
HashMap<String, Object> scenarioParams = new HashMap<>();
when(mapper.mapCaseDataToParams(any())).thenReturn(scenarioParams);
when(dashboardApiClient.recordScenario(any(), any(), anyString(), any())).thenReturn(ResponseEntity.of(
Expand All @@ -86,10 +86,29 @@ void shouldRecordScenario_whenInvoked() {
handler.handle(params);
verify(dashboardApiClient).recordScenario(
caseData.getCcdCaseReference().toString(),
"Scenario.AAA6.CP.Trial.Arrangements.Finalised.NotifyOtherParty.Claimant",
expectedScenario,
"BEARER_TOKEN",
ScenarioRequestParams.builder().params(scenarioParams).build()
);
}

static Stream<Object[]> provideCaseData() {
return Stream.of(
new Object[]{
CaseDataBuilder.builder().atStateClaimSubmittedSmallClaim()
.caseDataLip(CaseDataLiP.builder().applicant1SettleClaim(YesOrNo.YES)
.applicant1ClaimSettledDate(LocalDate.now()).build())
.applicant1Represented(YesOrNo.NO).build(),
SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_NOTIFY_OTHER_PARTY_CLAIMANT.getScenario()
},
new Object[]{
CaseDataBuilder.builder().atStateClaimSubmittedSmallClaim()
.caseDataLip(CaseDataLiP.builder().applicant1SettleClaim(YesOrNo.YES)
.applicant1ClaimSettledDate(LocalDate.now()).build())
.applicant1Represented(YesOrNo.YES).build(),
SCENARIO_AAA6_CP_TRIAL_ARRANGEMENTS_REQUIRED_LR_CLAIMANT.getScenario()
}
);
}
}
}
Loading

0 comments on commit d8f848f

Please sign in to comment.