FINERACT-1734 - Loan Account Delinquency Changed event definition

[x] Fix Charge data because not fetched the content
This commit is contained in:
Janos Haber
2023-01-11 12:00:57 +01:00
committed by Arnold Gálovics
parent 018aca3ba4
commit dde36f391c
3 changed files with 16 additions and 11 deletions
@@ -13,7 +13,7 @@
}, },
{ {
"name": "currency", "name": "currency",
"type": ["org.apache.fineract.avro.generic.v1.CurrencyDataV1"] "type": "org.apache.fineract.avro.generic.v1.CurrencyDataV1"
}, },
{ {
"name": "amount", "name": "amount",
@@ -37,8 +37,8 @@ import org.apache.fineract.infrastructure.event.external.service.serialization.s
import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
import org.apache.fineract.portfolio.loanaccount.data.LoanAccountData; import org.apache.fineract.portfolio.loanaccount.data.LoanAccountData;
import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.Loan;
import org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge;
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
import org.apache.fineract.portfolio.loanaccount.service.LoanChargeReadPlatformService;
import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
@@ -53,6 +53,8 @@ public class LoanDelinquencyRangeChangeBusinessEventSerializer extends AbstractB
private final LoanDelinquencyRangeDataMapper mapper; private final LoanDelinquencyRangeDataMapper mapper;
private final LoanChargeReadPlatformService loanChargeReadPlatformService;
private final LoanChargeDataMapper chargeMapper; private final LoanChargeDataMapper chargeMapper;
private final CurrencyDataMapper currencyMapper; private final CurrencyDataMapper currencyMapper;
@@ -65,13 +67,10 @@ public class LoanDelinquencyRangeChangeBusinessEventSerializer extends AbstractB
String accountNumber = data.getAccountNo(); String accountNumber = data.getAccountNo();
String externalId = data.getExternalId().getValue(); String externalId = data.getExternalId().getValue();
MonetaryCurrency loanCurrency = event.get().getCurrency(); MonetaryCurrency loanCurrency = event.get().getCurrency();
List<LoanChargeDataRangeViewV1> charges = event//
.get()// List<LoanChargeDataRangeViewV1> charges = loanChargeReadPlatformService.retrieveLoanCharges(id)//
.getRepaymentScheduleInstallments()//
.stream()// .stream()//
.flatMap(installment -> installment.getInstallmentCharges().stream())// .map(chargeMapper::mapRangeView)//
.map(LoanInstallmentCharge::getLoancharge)//
.map(charge -> chargeMapper.mapRangeView(charge.toData()))//
.toList(); .toList();
LoanAmountDataV1 amount = LoanAmountDataV1.newBuilder()// LoanAmountDataV1 amount = LoanAmountDataV1.newBuilder()//
.setPrincipalAmount(calculateDataSummary(event.get(), .setPrincipalAmount(calculateDataSummary(event.get(),
@@ -21,6 +21,7 @@ package org.apache.fineract.infrastructure.event.external.service.serialization.
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -61,6 +62,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan;
import org.apache.fineract.portfolio.loanaccount.domain.LoanCharge; import org.apache.fineract.portfolio.loanaccount.domain.LoanCharge;
import org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge; import org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge;
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
import org.apache.fineract.portfolio.loanaccount.service.LoanChargeReadPlatformService;
import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@@ -77,6 +79,9 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
@Mock @Mock
private LoanReadPlatformService loanReadPlatformService; private LoanReadPlatformService loanReadPlatformService;
@Mock
private LoanChargeReadPlatformService loanChargeReadPlatformService;
@BeforeEach @BeforeEach
public void setUp() { public void setUp() {
ThreadLocalContextUtil.setTenant(new FineractPlatformTenant(1L, "default", "Default", "Asia/Kolkata", null)); ThreadLocalContextUtil.setTenant(new FineractPlatformTenant(1L, "default", "Default", "Asia/Kolkata", null));
@@ -88,8 +93,8 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
public void testLoanRepaymentEventPayloadSerialization() throws IOException { public void testLoanRepaymentEventPayloadSerialization() throws IOException {
// given // given
LoanDelinquencyRangeChangeBusinessEventSerializer serializer = new LoanDelinquencyRangeChangeBusinessEventSerializer( LoanDelinquencyRangeChangeBusinessEventSerializer serializer = new LoanDelinquencyRangeChangeBusinessEventSerializer(
loanReadPlatformService, new LoanDelinquencyRangeDataMapperImpl(), new LoanChargeDataMapperImpl(), loanReadPlatformService, new LoanDelinquencyRangeDataMapperImpl(), loanChargeReadPlatformService,
new CurrencyDataMapperImpl()); new LoanChargeDataMapperImpl(), new CurrencyDataMapperImpl());
Loan loanForProcessing = Mockito.mock(Loan.class); Loan loanForProcessing = Mockito.mock(Loan.class);
LoanAccountData loanAccountData = mock(LoanAccountData.class); LoanAccountData loanAccountData = mock(LoanAccountData.class);
@@ -104,7 +109,6 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
when(loanAccountData.getCurrency()).thenAnswer(a -> new CurrencyData(loanCurrency.getCode(), loanCurrency.getDigitsAfterDecimal(), when(loanAccountData.getCurrency()).thenAnswer(a -> new CurrencyData(loanCurrency.getCode(), loanCurrency.getDigitsAfterDecimal(),
loanCurrency.getCurrencyInMultiplesOf())); loanCurrency.getCurrencyInMultiplesOf()));
when(loanForProcessing.getCurrency()).thenReturn(loanCurrency); when(loanForProcessing.getCurrency()).thenReturn(loanCurrency);
when(loanReadPlatformService.retrieveOne(any(Long.class))).thenReturn(loanAccountData); when(loanReadPlatformService.retrieveOne(any(Long.class))).thenReturn(loanAccountData);
LoanDelinquencyRangeChangeBusinessEvent event = new LoanDelinquencyRangeChangeBusinessEvent(loanForProcessing); LoanDelinquencyRangeChangeBusinessEvent event = new LoanDelinquencyRangeChangeBusinessEvent(loanForProcessing);
@@ -113,6 +117,8 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
repaymentScheduleInstallments.add(buildInstallment(loanForProcessing, loanCurrency, BigDecimal.valueOf(100), BigDecimal.valueOf(5), repaymentScheduleInstallments.add(buildInstallment(loanForProcessing, loanCurrency, BigDecimal.valueOf(100), BigDecimal.valueOf(5),
BigDecimal.valueOf(30), BigDecimal.valueOf(50), BigDecimal.valueOf(185), new BigDecimal("100.5"), new BigDecimal("200.3"))); BigDecimal.valueOf(30), BigDecimal.valueOf(50), BigDecimal.valueOf(185), new BigDecimal("100.5"), new BigDecimal("200.3")));
when(loanForProcessing.getRepaymentScheduleInstallments()).thenReturn(repaymentScheduleInstallments); when(loanForProcessing.getRepaymentScheduleInstallments()).thenReturn(repaymentScheduleInstallments);
when(loanChargeReadPlatformService.retrieveLoanCharges(anyLong())).thenAnswer(a -> repaymentScheduleInstallments.get(0)
.getInstallmentCharges().stream().map(c -> c.getLoancharge().toData()).collect(Collectors.toList()));
moneyHelper.when(() -> MoneyHelper.getRoundingMode()).thenReturn(RoundingMode.UP); moneyHelper.when(() -> MoneyHelper.getRoundingMode()).thenReturn(RoundingMode.UP);