Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,15 @@
"string"
]
},
{
"default": null,
"name": "breachEffectiveStartDate",
"doc": "breachStartDate shifted by the breach grace days; only set for the first breach period.",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "nearBreach",
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -1181,9 +1181,29 @@ public void workingCapitalLoanBreachPastDueChangeEventCheck(final Long loanId, f
public void workingCapitalLoanBreachChangeEventCheck(final Long loanId, final Boolean expectedBreach) {
workingCapitalLoanEventPayloadCheck(WorkingCapitalLoanBreachChangeEvent.class, loanId, event -> {
assertThat(event.getBreach()).isNotNull();
assertThat(event.getBreach().getBreachSchedule()).isNotNull().isNotEmpty();
assertThat(event.getBreach().getBreachSchedule()).as("breach.breachSchedule has a period with breach=%s", expectedBreach)
.anyMatch(period -> expectedBreach.equals(period.getBreach()));
assertBreachScheduleHasPeriodWithBreach(event.getBreach(), expectedBreach);
});
}

private static void assertBreachScheduleHasPeriodWithBreach(final WorkingCapitalBreachDataV1 breach, final Boolean expectedBreach) {
assertThat(breach.getBreachSchedule()).as("breach.breachSchedule").isNotNull().isNotEmpty();
assertThat(breach.getBreachSchedule()).as("breach.breachSchedule has a period with breach=%s", expectedBreach)
.anyMatch(period -> expectedBreach.equals(period.getBreach()));
}

public void workingCapitalLoanBreachChangeEventWithBreachDataCheck(final Long loanId, final Map<String, String> expected) {
workingCapitalLoanEventPayloadCheck(WorkingCapitalLoanBreachChangeEvent.class, loanId, event -> {
final WorkingCapitalBreachDataV1 breach = event.getBreach();
assertThat(breach).as("breach").isNotNull();
Optional.ofNullable(expected.get("breachFlag"))
.ifPresent(flag -> assertBreachScheduleHasPeriodWithBreach(breach, Boolean.valueOf(flag)));
assertEventDateEquals("breach.breachStartDate", breach.getBreachStartDate(), expected.get("breachStartDate"));
assertEventDateEquals("breach.breachEffectiveStartDate", breach.getBreachEffectiveStartDate(),
expected.get("breachEffectiveStartDate"));
Optional.ofNullable(expected.get("breachAmount"))
.ifPresent(amount -> assertAmountEquals("breach.breachAmount", breach.getBreachAmount(), new BigDecimal(amount)));
Optional.ofNullable(expected.get("breachPastDueAmount")).ifPresent(
amount -> assertAmountEquals("breach.breachPastDueAmount", breach.getBreachPastDueAmount(), new BigDecimal(amount)));
});
}

Expand Down Expand Up @@ -1454,8 +1474,13 @@ private static void assertEventDateEqualsApiDate(final String description, final
}

private static void assertEventDateEquals(final String description, final String eventDate, final String expectedDate) {
Optional.ofNullable(expectedDate).filter(s -> !s.isEmpty())
.ifPresent(expected -> assertThat(eventDate).as(description).isEqualTo(expected));
Optional.ofNullable(expectedDate).filter(s -> !s.isEmpty()).ifPresent(expected -> {
if ("null".equals(expected)) {
assertThat(eventDate).as(description).isNull();
} else {
assertThat(eventDate).as(description).isEqualTo(expected);
}
});
}

private void workingCapitalLoanAccountDataV1Check(final Class<? extends AbstractWorkingCapitalLoanEvent> eventClazz,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2125,6 +2125,11 @@ public void aWorkingCapitalLoanBreachChangeBusinessEventIsRaised(final String br
eventCheckHelper.workingCapitalLoanBreachChangeEventCheck(getCreatedLoanId(), Boolean.valueOf(breachFlag));
}

@Then("a Working Capital Loan Breach Change business event is raised with breach data:")
public void aWorkingCapitalLoanBreachChangeBusinessEventIsRaisedWithBreachData(final DataTable table) {
eventCheckHelper.workingCapitalLoanBreachChangeEventWithBreachDataCheck(getCreatedLoanId(), table.asMaps().get(0));
}

@Then("a Working Capital Loan Near Breach Change business event is raised with near breach flag {string}")
public void aWorkingCapitalLoanNearBreachChangeBusinessEventIsRaised(final String nearBreachFlag) {
eventCheckHelper.workingCapitalLoanNearBreachChangeEventCheck(getCreatedLoanId(), Boolean.valueOf(nearBreachFlag));
Expand Down Expand Up @@ -3695,6 +3700,8 @@ private List<String> fetchValuesOfWorkingCapitalLoan(final List<String> header,
: new Utils.DoubleFormatter(response.getBalance().getTotalDiscountFee().doubleValue()).format());
case "breachStartDate" ->
actualValues.add(response.getBreachStartDate() == null ? "null" : response.getBreachStartDate().toString());
case "breachEffectiveStartDate" -> actualValues
.add(response.getBreachEffectiveStartDate() == null ? "null" : response.getBreachEffectiveStartDate().toString());
case "delinquencyStartDate" ->
actualValues.add(response.getDelinquencyStartDate() == null ? "null" : response.getDelinquencyStartDate().toString());
case "delinquencyEffectiveStartDate" -> actualValues.add(response.getDelinquencyEffectiveStartDate() == null ? "null"
Expand Down
Loading
Loading