FINERACT-1876: Add missing fields into the LoanAccountDataV1 avro schema

This commit is contained in:
adam.magyari
2024-10-24 11:34:11 +02:00
committed by Adam Saghy
parent 0bca9897a6
commit 256afa1e51
2 changed files with 72 additions and 0 deletions
@@ -783,6 +783,38 @@
"null", "null",
"boolean" "boolean"
] ]
},
{
"default": null,
"name": "enableInstallmentLevelDelinquency",
"type": [
"null",
"boolean"
]
},
{
"default": null,
"name": "enableDownPayment",
"type": [
"null",
"boolean"
]
},
{
"default": null,
"name": "disbursedAmountPercentageForDownPayment",
"type": [
"null",
"bigdecimal"
]
},
{
"default": null,
"name": "enableAutoRepaymentForDownPayment",
"type": [
"null",
"boolean"
]
} }
] ]
} }
@@ -28,6 +28,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.UUID; import java.util.UUID;
import org.apache.fineract.accounting.common.AccountingConstants; import org.apache.fineract.accounting.common.AccountingConstants;
import org.apache.fineract.client.models.GetLoanProductsProductIdResponse; import org.apache.fineract.client.models.GetLoanProductsProductIdResponse;
@@ -38,12 +39,16 @@ import org.apache.fineract.client.models.PostLoansLoanIdRequest;
import org.apache.fineract.client.models.PostLoansLoanIdResponse; import org.apache.fineract.client.models.PostLoansLoanIdResponse;
import org.apache.fineract.client.models.SavingsAccountTransactionsSearchResponse; import org.apache.fineract.client.models.SavingsAccountTransactionsSearchResponse;
import org.apache.fineract.infrastructure.core.service.MathUtil; import org.apache.fineract.infrastructure.core.service.MathUtil;
import org.apache.fineract.infrastructure.event.external.service.validation.ExternalEventDTO;
import org.apache.fineract.integrationtests.common.ClientHelper; import org.apache.fineract.integrationtests.common.ClientHelper;
import org.apache.fineract.integrationtests.common.CommonConstants; import org.apache.fineract.integrationtests.common.CommonConstants;
import org.apache.fineract.integrationtests.common.ExternalEventConfigurationHelper;
import org.apache.fineract.integrationtests.common.accounting.FinancialActivityAccountHelper; import org.apache.fineract.integrationtests.common.accounting.FinancialActivityAccountHelper;
import org.apache.fineract.integrationtests.common.externalevents.ExternalEventHelper;
import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder; import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper; import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper; import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@@ -55,6 +60,8 @@ public class LoanAccountDisbursementToSavingsWithAutoDownPaymentTest extends Bas
@Test @Test
public void loanDisbursementToSavingsWithAutoDownPaymentAndStandingInstructionsTest() { public void loanDisbursementToSavingsWithAutoDownPaymentAndStandingInstructionsTest() {
runAt("01 March 2023", () -> { runAt("01 March 2023", () -> {
enableLoanBalanceChangedBusinessEvent();
ExternalEventHelper.deleteAllExternalEvents(requestSpec, createResponseSpecification(Matchers.is(204)));
// loan external Id // loan external Id
String loanExternalIdStr = UUID.randomUUID().toString(); String loanExternalIdStr = UUID.randomUUID().toString();
@@ -103,6 +110,8 @@ public class LoanAccountDisbursementToSavingsWithAutoDownPaymentTest extends Bas
// verify savings transactions // verify savings transactions
verifySavingsTransactions(savingsAccountId, savingsAccountHelper); verifySavingsTransactions(savingsAccountId, savingsAccountHelper);
verifyBusinessEvent();
disableLoanBalanceChangedBusinessEvent();
}); });
} }
@@ -237,6 +246,37 @@ public class LoanAccountDisbursementToSavingsWithAutoDownPaymentTest extends Bas
} }
private void enableLoanBalanceChangedBusinessEvent() {
final Map<String, Boolean> updatedConfigurations = ExternalEventConfigurationHelper.updateExternalEventConfigurations(requestSpec,
responseSpec, "{\"externalEventConfigurations\":{\"LoanBalanceChangedBusinessEvent\":true}}\n");
Assertions.assertEquals(updatedConfigurations.size(), 1);
Assertions.assertTrue(updatedConfigurations.containsKey("LoanBalanceChangedBusinessEvent"));
Assertions.assertTrue(updatedConfigurations.get("LoanBalanceChangedBusinessEvent"));
}
private void disableLoanBalanceChangedBusinessEvent() {
final Map<String, Boolean> updatedConfigurations = ExternalEventConfigurationHelper.updateExternalEventConfigurations(requestSpec,
responseSpec, "{\"externalEventConfigurations\":{\"LoanBalanceChangedBusinessEvent\":false}}\n");
Assertions.assertEquals(updatedConfigurations.size(), 1);
Assertions.assertTrue(updatedConfigurations.containsKey("LoanBalanceChangedBusinessEvent"));
Assertions.assertFalse(updatedConfigurations.get("LoanBalanceChangedBusinessEvent"));
}
private void verifyBusinessEvent() {
List<ExternalEventDTO> allExternalEvents = ExternalEventHelper.getAllExternalEvents(requestSpec, responseSpec);
String type = "LoanBalanceChangedBusinessEvent";
final Optional<ExternalEventDTO> optionalExternalEventDTO = allExternalEvents.stream().filter(event -> event.getType().equals(type))
.findFirst();
Assertions.assertTrue(optionalExternalEventDTO.isPresent());
final ExternalEventDTO externalEventDTO = optionalExternalEventDTO.get();
Assertions.assertEquals(externalEventDTO.getPayLoad().get("enableDownPayment"), Boolean.TRUE);
Assertions.assertEquals(externalEventDTO.getPayLoad().get("enableAutoRepaymentForDownPayment"), Boolean.TRUE);
Assertions.assertEquals(externalEventDTO.getPayLoad().get("disbursedAmountPercentageForDownPayment"),
DOWN_PAYMENT_PERCENTAGE.doubleValue());
}
/** /**
* Delete the Financial activities * Delete the Financial activities
*/ */