FINERACT-2050: Fix client transfer loan status staying in TRANSFER_IN_PROGRESS

This commit is contained in:
airajena
2026-02-17 12:06:12 +00:00
committed by Adam Saghy
parent 7daf4b8a84
commit 2ee6f22713
4 changed files with 63 additions and 5 deletions
@@ -421,6 +421,55 @@ class DefaultLoanLifecycleStateMachineTest {
verify(businessEventNotifierService).notifyPostBusinessEvent(any(LoanStatusChangedBusinessEvent.class));
}
@Test
public void testTransitionShouldWorkProperlyForLoanCompleteTransferWhenTransferInProgress() {
// given
MonetaryCurrency currency = new MonetaryCurrency("USD", 2, null);
Loan loan = Mockito.mock(Loan.class);
LoanSummary loanSummary = Mockito.mock(LoanSummary.class);
Mockito.when(loan.getStatus()).thenReturn(LoanStatus.TRANSFER_IN_PROGRESS);
Mockito.when(loan.getTotalOverpaid()).thenReturn(null);
Mockito.when(loan.getSummary()).thenReturn(loanSummary);
Mockito.when(loan.getCurrency()).thenReturn(currency);
Mockito.when(loanSummary.isRepaidInFull(currency)).thenReturn(false);
// when
underTest.transition(LoanEvent.LOAN_COMPLETE_TRANSFER, loan);
// then
verify(loan).setLoanStatus(LoanStatus.ACTIVE);
verify(businessEventNotifierService).notifyPostBusinessEvent(any(LoanStatusChangedBusinessEvent.class));
}
@Test
public void testTransitionShouldWorkProperlyForLoanCompleteTransferWhenTransferInProgressAndOverpaid() {
// given
Loan loan = Mockito.mock(Loan.class);
Mockito.when(loan.getStatus()).thenReturn(LoanStatus.TRANSFER_IN_PROGRESS);
Mockito.when(loan.getTotalOverpaid()).thenReturn(BigDecimal.ONE);
// when
underTest.transition(LoanEvent.LOAN_COMPLETE_TRANSFER, loan);
// then
verify(loan).setLoanStatus(LoanStatus.OVERPAID);
verify(businessEventNotifierService).notifyPostBusinessEvent(any(LoanStatusChangedBusinessEvent.class));
}
@Test
public void testTransitionShouldWorkProperlyForLoanCompleteTransferWhenTransferInProgressAndFullyPaid() {
// given
MonetaryCurrency currency = new MonetaryCurrency("USD", 2, null);
Loan loan = Mockito.mock(Loan.class);
LoanSummary loanSummary = Mockito.mock(LoanSummary.class);
Mockito.when(loan.getStatus()).thenReturn(LoanStatus.TRANSFER_IN_PROGRESS);
Mockito.when(loan.getTotalOverpaid()).thenReturn(null);
Mockito.when(loan.getSummary()).thenReturn(loanSummary);
Mockito.when(loan.getCurrency()).thenReturn(currency);
Mockito.when(loanSummary.isRepaidInFull(currency)).thenReturn(true);
// when
underTest.transition(LoanEvent.LOAN_COMPLETE_TRANSFER, loan);
// then
verify(loan).setLoanStatus(LoanStatus.CLOSED_OBLIGATIONS_MET);
verify(businessEventNotifierService).notifyPostBusinessEvent(any(LoanStatusChangedBusinessEvent.class));
}
private Loan createLoanWithStatus(LoanStatus status) {
Loan result = new Loan();
result.setLoanStatus(status);