This is an automated email from the ASF dual-hosted git repository.
adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new 26eca0fcc [FINERACT-1958] Tests for delinquency bucket on down payment
installment
26eca0fcc is described below
commit 26eca0fccdf3fbcca902cc8af754d124df146739
Author: taskain7 <[email protected]>
AuthorDate: Mon Sep 4 14:05:26 2023 +0200
[FINERACT-1958] Tests for delinquency bucket on down payment installment
---
.../LoanRepaymentScheduleWithDownPaymentTest.java | 66 ++++++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanRepaymentScheduleWithDownPaymentTest.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanRepaymentScheduleWithDownPaymentTest.java
index 8e27d9e2c..95792cef9 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanRepaymentScheduleWithDownPaymentTest.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanRepaymentScheduleWithDownPaymentTest.java
@@ -38,7 +38,11 @@ import
org.apache.fineract.client.models.GetLoansLoanIdRepaymentPeriod;
import org.apache.fineract.client.models.GetLoansLoanIdResponse;
import org.apache.fineract.client.models.PostChargesResponse;
import org.apache.fineract.client.models.PostLoansLoanIdChargesResponse;
+import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType;
+import org.apache.fineract.integrationtests.common.BusinessDateHelper;
import org.apache.fineract.integrationtests.common.ClientHelper;
+import org.apache.fineract.integrationtests.common.GlobalConfigurationHelper;
+import org.apache.fineract.integrationtests.common.SchedulerJobHelper;
import org.apache.fineract.integrationtests.common.Utils;
import org.apache.fineract.integrationtests.common.charges.ChargesHelper;
import
org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
@@ -790,6 +794,68 @@ public class LoanRepaymentScheduleWithDownPaymentTest {
assertEquals(expectedRepaymentInterest,
thirdRepaymentPeriod.getInterestDue());
}
+ @Test
+ public void testDelinquencyRangeOnDownPaymentInstallment() {
+ try {
+ GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec,
responseSpec, Boolean.TRUE);
+ String loanExternalIdStr = UUID.randomUUID().toString();
+
+ final Integer delinquencyBucketId =
DelinquencyBucketsHelper.createDelinquencyBucket(requestSpec, responseSpec);
+ final GetDelinquencyBucketsResponse delinquencyBucket =
DelinquencyBucketsHelper.getDelinquencyBucket(requestSpec, responseSpec,
+ delinquencyBucketId);
+
+ Boolean enableDownPayment = true;
+ BigDecimal disbursedAmountPercentageForDownPayment =
BigDecimal.valueOf(25);
+ Boolean enableAutoRepaymentForDownPayment = false;
+
+ final Integer clientId =
clientHelper.createClient(ClientHelper.defaultClientCreationRequest()).getClientId().intValue();
+
+ Integer loanProductId =
createLoanProductWithDownPaymentConfiguration(loanTransactionHelper,
delinquencyBucketId,
+ enableDownPayment, "25",
enableAutoRepaymentForDownPayment, false);
+
+ final GetLoanProductsProductIdResponse
getLoanProductsProductResponse =
loanTransactionHelper.getLoanProduct(loanProductId);
+ assertNotNull(getLoanProductsProductResponse);
+ assertEquals(enableDownPayment,
getLoanProductsProductResponse.getEnableDownPayment());
+ assertEquals(0,
getLoanProductsProductResponse.getDisbursedAmountPercentageForDownPayment()
+ .compareTo(disbursedAmountPercentageForDownPayment));
+ assertEquals(enableAutoRepaymentForDownPayment,
getLoanProductsProductResponse.getEnableAutoRepaymentForDownPayment());
+
+ final Integer loanId =
createApproveAndDisburseLoanAccount(clientId, loanProductId.longValue(),
loanExternalIdStr, "1", "0");
+
+ LocalDate businessDate = LocalDate.of(2022, 9, 5);
+ BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec,
BusinessDateType.BUSINESS_DATE, businessDate);
+
+ final String jobName = "Loan COB";
+ final SchedulerJobHelper schedulerJobHelper = new
SchedulerJobHelper(requestSpec);
+ schedulerJobHelper.executeAndAwaitJob(jobName);
+
+ GetLoansLoanIdResponse loanDetails =
loanTransactionHelper.getLoanDetails(loanId.longValue());
+
+ assertNotNull(loanDetails);
+ assertEquals(enableDownPayment,
loanDetails.getEnableDownPayment());
+ assertEquals(0,
loanDetails.getDisbursedAmountPercentageForDownPayment().compareTo(disbursedAmountPercentageForDownPayment));
+ assertEquals(enableAutoRepaymentForDownPayment,
loanDetails.getEnableAutoRepaymentForDownPayment());
+
+ List<GetLoansLoanIdRepaymentPeriod> periods =
loanDetails.getRepaymentSchedule().getPeriods();
+ Double expectedDownPaymentAmount = 250.00;
+ LocalDate expectedDownPaymentDueDate = LocalDate.of(2022, 9, 3);
+ Double expectedRepaymentAmount = 750.00;
+ LocalDate expectedRepaymentDueDate = LocalDate.of(2022, 10, 3);
+
+ assertTrue(periods.stream() //
+ .anyMatch(period ->
expectedDownPaymentAmount.equals(period.getTotalDueForPeriod()) //
+ &&
expectedDownPaymentDueDate.equals(period.getDueDate())));
+ assertTrue(periods.stream().anyMatch(period ->
expectedRepaymentAmount.equals(period.getTotalDueForPeriod())
+ && expectedRepaymentDueDate.equals(period.getDueDate())));
+ assertNotNull(loanDetails.getDelinquencyRange());
+ assertEquals(2, loanDetails.getDelinquent().getDelinquentDays());
+ } finally {
+ final LocalDate todaysDate = Utils.getLocalDateOfTenant();
+ BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec,
BusinessDateType.BUSINESS_DATE, todaysDate);
+ GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec,
responseSpec, Boolean.FALSE);
+ }
+ }
+
private Integer createLoanProductWithDownPaymentConfiguration(final
LoanTransactionHelper loanTransactionHelper,
final Integer delinquencyBucketId, Boolean enableDownPayment,
String disbursedAmountPercentageForDownPayment,
Boolean enableAutoRepaymentForDownPayment, boolean
multiDisbursement) {