FINERACT-2050: Fix client transfer loan status staying in TRANSFER_IN_PROGRESS
This commit is contained in:
+49
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user