Skip to content

Commit

Permalink
[NFDIV-4594] Allow CO flag resets in ConditionalOrderDrafted (#4284)
Browse files Browse the repository at this point in the history
* Allow CO flag resets in ConditionalOrderDrafted

* Improve variable name
  • Loading branch information
adamg-hmcts authored Feb 4, 2025
1 parent 51827ae commit bf3fa87
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import java.util.Collections;

import static uk.gov.hmcts.divorce.divorcecase.model.State.AwaitingConditionalOrder;
import static uk.gov.hmcts.divorce.divorcecase.model.State.ConditionalOrderDrafted;
import static uk.gov.hmcts.divorce.divorcecase.model.UserRole.CASE_WORKER;
import static uk.gov.hmcts.divorce.divorcecase.model.UserRole.JUDGE;
import static uk.gov.hmcts.divorce.divorcecase.model.UserRole.LEGAL_ADVISOR;
Expand Down Expand Up @@ -46,7 +47,7 @@ public void configure(final ConfigBuilder<CaseData, State, UserRole> configBuild

new PageBuilder(configBuilder
.event(CASEWORKER_RESET_CONDITIONAL_ORDER)
.forState(AwaitingConditionalOrder)
.forStates(AwaitingConditionalOrder, ConditionalOrderDrafted)
.aboutToSubmitCallback(this::aboutToSubmit)
.name(RESET_CONDITIONAL_ORDER)
.description(RESET_CONDITIONAL_ORDER)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,38 @@ public CaseDetails<CaseData, State> apply(final CaseDetails<CaseData, State> cas
log.info("Resetting conditional order flags for case id {} ", caseDetails.getId());

final CaseData data = caseDetails.getData();
final boolean conditionalOrderInProgress = State.ConditionalOrderDrafted.equals(caseDetails.getState());

data.getConditionalOrder().getConditionalOrderApplicant1Questions().setIsSubmitted(NO);

resetConditionalOrderSubmittedFlags(data);
if (!conditionalOrderInProgress) {
resetConditionalOrderDraftedFlags(data);
}

return caseDetails;
}

private void resetConditionalOrderDraftedFlags(CaseData data) {
data.getConditionalOrder().getConditionalOrderApplicant1Questions().setIsDrafted(NO);
data.getConditionalOrder().getConditionalOrderApplicant1Questions().setSubmittedDate(null);
data.getConditionalOrder().getConditionalOrderApplicant1Questions().setStatementOfTruth(null);
if (data.getApplicationType() != null && !data.getApplicationType().isSole()) {
data.getConditionalOrder().getConditionalOrderApplicant2Questions().setIsSubmitted(NO);

if (isJointApplication(data)) {
data.getConditionalOrder().getConditionalOrderApplicant2Questions().setIsDrafted(NO);
data.getConditionalOrder().getConditionalOrderApplicant2Questions().setSubmittedDate(null);
data.getConditionalOrder().getConditionalOrderApplicant2Questions().setStatementOfTruth(null);
}
}

return caseDetails;
private void resetConditionalOrderSubmittedFlags(CaseData data) {
data.getConditionalOrder().getConditionalOrderApplicant1Questions().setIsSubmitted(NO);
data.getConditionalOrder().getConditionalOrderApplicant1Questions().setSubmittedDate(null);

if (isJointApplication(data)) {
data.getConditionalOrder().getConditionalOrderApplicant2Questions().setIsSubmitted(NO);
data.getConditionalOrder().getConditionalOrderApplicant2Questions().setSubmittedDate(null);
}
}

private boolean isJointApplication(CaseData data) {
return data.getApplicationType() != null && !data.getApplicationType().isSole();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import uk.gov.hmcts.divorce.divorcecase.model.ConditionalOrderQuestions;
import uk.gov.hmcts.divorce.divorcecase.model.State;

import static org.junit.Assert.assertNull;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;

Expand Down Expand Up @@ -41,7 +42,9 @@ void resetsConditionalOrderFlagsForSoleCases() {

assertAll(
() -> assertEquals(YesOrNo.NO, app1CoQuestions.getIsDrafted()),
() -> assertEquals(YesOrNo.NO, app1CoQuestions.getIsSubmitted())
() -> assertEquals(null, app1CoQuestions.getStatementOfTruth()),
() -> assertEquals(YesOrNo.NO, app1CoQuestions.getIsSubmitted()),
() -> assertEquals(null, app1CoQuestions.getSubmittedDate())
);
}

Expand Down Expand Up @@ -69,9 +72,66 @@ void resetsConditionalOrderFlagsForJointCases() {

assertAll(
() -> assertEquals(YesOrNo.NO, app1CoQuestions.getIsDrafted()),
() -> assertEquals(null, app1CoQuestions.getStatementOfTruth()),
() -> assertEquals(YesOrNo.NO, app1CoQuestions.getIsSubmitted()),
() -> assertEquals(null, app1CoQuestions.getSubmittedDate()),
() -> assertEquals(YesOrNo.NO, app2CoQuestions.getIsDrafted()),
() -> assertEquals(YesOrNo.NO, app2CoQuestions.getIsSubmitted())
() -> assertEquals(null, app2CoQuestions.getStatementOfTruth()),
() -> assertEquals(YesOrNo.NO, app2CoQuestions.getIsSubmitted()),
() -> assertEquals(null, app2CoQuestions.getSubmittedDate())
);
}

@Test
void onlyResetsSoleConditionalOrderSubmittedFlagsIfConditionalOrderIsBeingDrafted() {
final CaseData caseData = CaseData.builder()
.applicationType(ApplicationType.SOLE_APPLICATION)
.conditionalOrder(ConditionalOrder.builder()
.conditionalOrderApplicant1Questions(
completedConditionalOrderQuestions()
).build()
).build();

final CaseDetails<CaseData, State> caseDetails = CaseDetails.<CaseData, State>builder()
.data(caseData)
.state(State.ConditionalOrderDrafted)
.build();

resetConditionalOrderFlags.apply(caseDetails);

final ConditionalOrderQuestions app1CoQuestions = caseData.getConditionalOrder().getConditionalOrderApplicant1Questions();

assertAll(
() -> assertEquals(YesOrNo.NO, app1CoQuestions.getIsSubmitted()),
() -> assertNull(app1CoQuestions.getSubmittedDate())
);
}

@Test
void onlyResetsJointConditionalOrderSubmittedFlagsIfConditionalOrderIsBeingDrafted() {
final CaseData caseData = CaseData.builder()
.applicationType(ApplicationType.JOINT_APPLICATION)
.conditionalOrder(ConditionalOrder.builder()
.conditionalOrderApplicant1Questions(
completedConditionalOrderQuestions()
).build()
).build();

final CaseDetails<CaseData, State> caseDetails = CaseDetails.<CaseData, State>builder()
.data(caseData)
.state(State.ConditionalOrderDrafted)
.build();

resetConditionalOrderFlags.apply(caseDetails);

final ConditionalOrderQuestions app1CoQuestions = caseData.getConditionalOrder().getConditionalOrderApplicant1Questions();
final ConditionalOrderQuestions app2CoQuestions = caseData.getConditionalOrder().getConditionalOrderApplicant2Questions();

assertAll(
() -> assertEquals(YesOrNo.NO, app1CoQuestions.getIsSubmitted()),
() -> assertNull(app1CoQuestions.getSubmittedDate()),
() -> assertEquals(YesOrNo.NO, app2CoQuestions.getIsSubmitted()),
() -> assertNull(app2CoQuestions.getSubmittedDate())
);
}

Expand Down

0 comments on commit bf3fa87

Please sign in to comment.