|
83 | 83 | import org.apache.fineract.test.messaging.event.loan.transaction.LoanTransactionMerchantIssuedRefundPostEvent; |
84 | 84 | import org.apache.fineract.test.messaging.event.loan.transaction.LoanTransactionPayoutRefundPostEvent; |
85 | 85 | import org.apache.fineract.test.messaging.event.loan.transaction.LoanUndoContractTerminationBusinessEvent; |
| 86 | +import org.apache.fineract.test.messaging.event.workingcapitalloan.transaction.WorkingCapitalLoanCreditBalanceRefundTransactionBusinessEvent; |
86 | 87 | import org.apache.fineract.test.messaging.event.workingcapitalloan.transaction.WorkingCapitalLoanDisbursalTransactionBusinessEvent; |
87 | 88 | import org.apache.fineract.test.messaging.event.workingcapitalloan.transaction.WorkingCapitalLoanUndoDisbursalTransactionBusinessEvent; |
88 | 89 | import org.springframework.beans.factory.annotation.Autowired; |
@@ -318,6 +319,27 @@ public void workingCapitalLoanDisbursalTransactionEventCheck(final Long loanId, |
318 | 319 | .extractingData(WorkingCapitalLoanTransactionDataV1::getReversed).isEqualTo(Boolean.FALSE); |
319 | 320 | } |
320 | 321 |
|
| 322 | + public void workingCapitalLoanCreditBalanceRefundTransactionEventCheck(final Long loanId, final BigDecimal expectedAmount) { |
| 323 | + waitForTransactionCommit(); |
| 324 | + final GetWorkingCapitalLoansLoanIdResponse body = ok( |
| 325 | + () -> fineractClient.workingCapitalLoans().retrieveWorkingCapitalLoanById(loanId)); |
| 326 | + if (body.getTransactions() == null || body.getTransactions().isEmpty()) { |
| 327 | + throw new IllegalStateException("No Working Capital Loan transactions found"); |
| 328 | + } |
| 329 | + |
| 330 | + final GetWorkingCapitalLoanTransactionIdResponse cbrTransaction = body.getTransactions().stream() |
| 331 | + .filter(t -> t.getType() != null && "loanTransactionType.creditBalanceRefund".equals(t.getType().getCode()) |
| 332 | + && !Boolean.TRUE.equals(t.getReversed())) |
| 333 | + .reduce((first, second) -> second) |
| 334 | + .orElseThrow(() -> new IllegalStateException("Credit balance refund transaction not found")); |
| 335 | + |
| 336 | + eventAssertion.assertEvent(WorkingCapitalLoanCreditBalanceRefundTransactionBusinessEvent.class, cbrTransaction.getId())// |
| 337 | + .extractingData(WorkingCapitalLoanTransactionDataV1::getWcLoanId).isEqualTo(loanId)// |
| 338 | + .extractingBigDecimal(WorkingCapitalLoanTransactionDataV1::getTransactionAmount) |
| 339 | + .isEqualTo(expectedAmount == null ? cbrTransaction.getTransactionAmount() : expectedAmount)// |
| 340 | + .extractingData(WorkingCapitalLoanTransactionDataV1::getReversed).isEqualTo(Boolean.FALSE); |
| 341 | + } |
| 342 | + |
321 | 343 | public void workingCapitalLoanUndoDisbursalTransactionEventCheck(final Long loanId) { |
322 | 344 | workingCapitalLoanUndoDisbursalTransactionEventCheck(loanId, null); |
323 | 345 | } |
|
0 commit comments