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 18811e57b FINERACT-1724: Delinquency classification tests were failing
18811e57b is described below

commit 18811e57b32f1dc9413c8188d59a918a9ecd36f8
Author: Jose Alberto Hernandez <[email protected]>
AuthorDate: Sun Mar 5 23:49:55 2023 -0600

    FINERACT-1724: Delinquency classification tests were failing
---
 .../DelinquencyBucketsIntegrationTest.java         | 61 +++++++++++++---------
 .../common/BusinessDateHelper.java                 | 11 ++++
 .../fineract/integrationtests/common/Utils.java    |  3 ++
 3 files changed, 49 insertions(+), 26 deletions(-)

diff --git 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/DelinquencyBucketsIntegrationTest.java
 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/DelinquencyBucketsIntegrationTest.java
index 88b22de72..2eb8d3f50 100644
--- 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/DelinquencyBucketsIntegrationTest.java
+++ 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/DelinquencyBucketsIntegrationTest.java
@@ -34,6 +34,7 @@ import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.HashMap;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.fineract.client.models.BusinessDateResponse;
 import org.apache.fineract.client.models.DeleteDelinquencyBucketResponse;
 import org.apache.fineract.client.models.DeleteDelinquencyRangeResponse;
 import org.apache.fineract.client.models.GetDelinquencyBucketsResponse;
@@ -64,7 +65,6 @@ import 
org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
 import 
org.apache.fineract.integrationtests.common.products.DelinquencyBucketsHelper;
 import 
org.apache.fineract.integrationtests.common.products.DelinquencyRangesHelper;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 @Slf4j
@@ -72,6 +72,7 @@ public class DelinquencyBucketsIntegrationTest {
 
     private ResponseSpecification responseSpec;
     private RequestSpecification requestSpec;
+    private BusinessDateHelper businessDateHelper;
     private static final String principalAmount = "10000";
 
     @BeforeEach
@@ -81,6 +82,7 @@ public class DelinquencyBucketsIntegrationTest {
         requestSpec = new 
RequestSpecBuilder().setContentType(ContentType.JSON).build();
         requestSpec.header("Authorization", "Basic " + 
Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
         responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
+        this.businessDateHelper = new BusinessDateHelper();
     }
 
     @Test
@@ -236,10 +238,16 @@ public class DelinquencyBucketsIntegrationTest {
     }
 
     @Test
-    @Disabled("It was failing at the beginning of some moths")
     public void testLoanClassificationRealtime() {
         // Given
         final LoanTransactionHelper loanTransactionHelper = new 
LoanTransactionHelper(this.requestSpec, this.responseSpec);
+        GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec, 
responseSpec, Boolean.TRUE);
+
+        final LocalDate bussinesLocalDate = Utils.getDateAsLocalDate("01 March 
2012");
+        log.info("Current date {}", bussinesLocalDate);
+        BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, 
BusinessDateType.BUSINESS_DATE, bussinesLocalDate);
+        final BusinessDateResponse businessDateResponse = 
this.businessDateHelper.getBusinessDateByType(requestSpec, responseSpec,
+                BusinessDateType.BUSINESS_DATE);
 
         ArrayList<Integer> rangeIds = new ArrayList<>();
         // First Range
@@ -275,9 +283,8 @@ public class DelinquencyBucketsIntegrationTest {
         log.info("Loan Product Bucket Name: {}", 
getLoanProductsProductResponse.getDelinquencyBucket().getName());
         
assertEquals(getLoanProductsProductResponse.getDelinquencyBucket().getName(), 
delinquencyBucket.getName());
 
-        final LocalDate todaysDate = Utils.getLocalDateOfTenant();
         // Older date to have more than one overdue installment
-        final LocalDate transactionDate = todaysDate.minusDays(50);
+        final LocalDate transactionDate = bussinesLocalDate.minusDays(50);
         String operationDate = Utils.dateFormatter.format(transactionDate);
 
         // Create Loan Account
@@ -285,15 +292,16 @@ public class DelinquencyBucketsIntegrationTest {
                 getLoanProductsProductResponse.getId().toString(), 
operationDate);
 
         GetLoansLoanIdResponse getLoansLoanIdResponse = 
loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId);
-        log.info("Loan Delinquency Range after Disbursement {}", 
getLoansLoanIdResponse.getDelinquencyRange().getClassification());
         assertNotNull(getLoansLoanIdResponse);
+        assertNotNull(getLoansLoanIdResponse.getDelinquencyRange());
+        log.info("Loan Delinquency Range after Disbursement {}", 
getLoansLoanIdResponse.getDelinquencyRange().getClassification());
         // First Loan Delinquency Classification after Disbursement command
         
assertEquals(getLoansLoanIdResponse.getDelinquencyRange().getClassification(), 
classificationExpected);
 
         loanTransactionHelper.printRepaymentSchedule(getLoansLoanIdResponse);
 
         // Apply a partial repayment
-        operationDate = Utils.dateFormatter.format(todaysDate);
+        operationDate = Utils.dateFormatter.format(bussinesLocalDate);
         loanTransactionHelper.makeLoanRepayment(operationDate, 100.0f, loanId);
 
         getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, 
responseSpec, loanId);
@@ -316,16 +324,20 @@ public class DelinquencyBucketsIntegrationTest {
         log.info("Delinquency Tag History items {}", 
getDelinquencyTagsHistory.size());
         assertEquals(1, getDelinquencyTagsHistory.size());
         assertNotNull(getDelinquencyTagsHistory.get(0).getLiftedOnDate());
-        assertEquals(getDelinquencyTagsHistory.get(0).getAddedOnDate(), 
Utils.getLocalDateOfTenant());
-        assertEquals(getDelinquencyTagsHistory.get(0).getLiftedOnDate(), 
Utils.getLocalDateOfTenant());
+        assertEquals(getDelinquencyTagsHistory.get(0).getAddedOnDate(), 
businessDateResponse.getDate());
+        assertEquals(getDelinquencyTagsHistory.get(0).getLiftedOnDate(), 
businessDateResponse.getDate());
         
assertEquals(getDelinquencyTagsHistory.get(0).getDelinquencyRange().getClassification(),
 classificationExpected);
         log.info("Delinquency Tag Item with Lifted On {}", 
getDelinquencyTagsHistory.get(0).getLiftedOnDate());
+        GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec, 
responseSpec, Boolean.FALSE);
     }
 
     @Test
-    @Disabled("It was failing at the beginning of some moths")
     public void testLoanClassificationRealtimeWithCharges() {
-        GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec, 
responseSpec, Boolean.FALSE);
+        GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec, 
responseSpec, Boolean.TRUE);
+
+        final LocalDate bussinesLocalDate = Utils.getDateAsLocalDate("01 April 
2012");
+        log.info("Current date {}", bussinesLocalDate);
+        BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, 
BusinessDateType.BUSINESS_DATE, bussinesLocalDate);
 
         // Given
         final LoanTransactionHelper loanTransactionHelper = new 
LoanTransactionHelper(this.requestSpec, this.responseSpec);
@@ -364,9 +376,8 @@ public class DelinquencyBucketsIntegrationTest {
         log.info("Loan Product Bucket Name: {}", 
getLoanProductsProductResponse.getDelinquencyBucket().getName());
         
assertEquals(getLoanProductsProductResponse.getDelinquencyBucket().getName(), 
delinquencyBucket.getName());
 
-        final LocalDate todaysDate = Utils.getLocalDateOfTenant();
         // Older date to have more than one overdue installment
-        LocalDate transactionDate = todaysDate.minusMonths(2).minusDays(5);
+        LocalDate transactionDate = 
bussinesLocalDate.minusMonths(2).minusDays(5);
         String operationDate = Utils.dateFormatter.format(transactionDate);
 
         // Create Loan Account
@@ -381,7 +392,7 @@ public class DelinquencyBucketsIntegrationTest {
         loanTransactionHelper.printRepaymentSchedule(getLoansLoanIdResponse);
 
         // Apply a repayment to get a full paid installment
-        operationDate = Utils.dateFormatter.format(todaysDate);
+        operationDate = Utils.dateFormatter.format(bussinesLocalDate);
         loanTransactionHelper.makeLoanRepayment(operationDate, 2049.99f, 
loanId);
 
         getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, 
responseSpec, loanId);
@@ -391,7 +402,7 @@ public class DelinquencyBucketsIntegrationTest {
         assertNull(getLoansLoanIdResponse.getDelinquencyRange());
         loanTransactionHelper.printRepaymentSchedule(getLoansLoanIdResponse);
 
-        transactionDate = todaysDate.minusDays(18);
+        transactionDate = bussinesLocalDate.minusDays(18);
         operationDate = Utils.dateFormatter.format(transactionDate);
 
         // Create and apply Charge for Specific Due Date
@@ -409,6 +420,7 @@ public class DelinquencyBucketsIntegrationTest {
         assertNotNull(getLoansLoanIdResponse.getDelinquencyRange());
         // Evaluate a Delinquency Tag set after add charge to the Loan
         
assertEquals(getLoansLoanIdResponse.getDelinquencyRange().getClassification(), 
classificationExpected);
+        GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec, 
responseSpec, Boolean.FALSE);
     }
 
     @Test
@@ -706,15 +718,13 @@ public class DelinquencyBucketsIntegrationTest {
         GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec, 
responseSpec, Boolean.FALSE);
     }
 
-    @Disabled("Failing test.Need rework")
     @Test
     public void testLoanClassificationStepAsPartOfCOB() {
         GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec, 
responseSpec, Boolean.TRUE);
 
-        LocalDate businessDate = Utils.getLocalDateOfTenant();
-        businessDate = businessDate.minusDays(4);
-        log.info("Current date {}", businessDate);
-        BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, 
BusinessDateType.BUSINESS_DATE, businessDate);
+        LocalDate bussinesLocalDate = Utils.getDateAsLocalDate("01 April 
2012");
+        log.info("Current date {}", bussinesLocalDate);
+        BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, 
BusinessDateType.BUSINESS_DATE, bussinesLocalDate);
 
         // Given
         final LoanTransactionHelper loanTransactionHelper = new 
LoanTransactionHelper(this.requestSpec, this.responseSpec);
@@ -748,9 +758,8 @@ public class DelinquencyBucketsIntegrationTest {
         log.info("Loan Product Bucket Name: {}", 
getLoanProductsProductResponse.getDelinquencyBucket().getName());
         
assertEquals(getLoanProductsProductResponse.getDelinquencyBucket().getName(), 
delinquencyBucket.getName());
 
-        final LocalDate todaysDate = Utils.getLocalDateOfTenant();
         // Older date to have more than one overdue installment
-        final LocalDate transactionDate = todaysDate.minusDays(33);
+        final LocalDate transactionDate = bussinesLocalDate.minusDays(31);
         String operationDate = Utils.dateFormatter.format(transactionDate);
 
         // Create Loan Account
@@ -784,11 +793,11 @@ public class DelinquencyBucketsIntegrationTest {
         }
 
         // Move the Business date to get older the loan and to have an overdue 
loan
-        LocalDate lastLoanCOBBusinessDate = businessDate;
-        businessDate = businessDate.plusDays(3);
-        schedulerJobHelper.fastForwardTime(lastLoanCOBBusinessDate, 
businessDate, jobName, responseSpec);
-        log.info("Current date {}", businessDate);
-        BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, 
BusinessDateType.BUSINESS_DATE, businessDate);
+        LocalDate lastLoanCOBBusinessDate = bussinesLocalDate;
+        bussinesLocalDate = bussinesLocalDate.plusDays(3);
+        schedulerJobHelper.fastForwardTime(lastLoanCOBBusinessDate, 
bussinesLocalDate, jobName, responseSpec);
+        log.info("Current date {}", bussinesLocalDate);
+        BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, 
BusinessDateType.BUSINESS_DATE, bussinesLocalDate);
         // Run Second time the Job
         schedulerJobHelper.executeAndAwaitJob(jobName);
 
diff --git 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/BusinessDateHelper.java
 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/BusinessDateHelper.java
index cb06f13e7..ec4b71d97 100644
--- 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/BusinessDateHelper.java
+++ 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/BusinessDateHelper.java
@@ -27,12 +27,15 @@ import java.util.List;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.client.models.BusinessDateRequest;
 import org.apache.fineract.client.models.BusinessDateResponse;
+import org.apache.fineract.client.util.JSON;
 import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType;
 import org.apache.fineract.integrationtests.client.IntegrationTest;
 
 @Slf4j
 public final class BusinessDateHelper extends IntegrationTest {
 
+    private static final Gson GSON = new JSON().getGson();
+
     public BusinessDateHelper() {}
 
     public static HashMap updateBusinessDate(final RequestSpecification 
requestSpec, final ResponseSpecification responseSpec,
@@ -49,6 +52,14 @@ public final class BusinessDateHelper extends 
IntegrationTest {
         return 
ok(fineract().businessDateManagement.updateBusinessDate(request));
     }
 
+    public BusinessDateResponse getBusinessDateByType(final 
RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+            final BusinessDateType type) {
+        final String BUSINESS_DATE_API = 
"/fineract-provider/api/v1/businessdate/" + type.name() + "?" + 
Utils.TENANT_IDENTIFIER;
+        final String response = Utils.performServerGet(requestSpec, 
responseSpec, BUSINESS_DATE_API);
+        log.info("{}", response);
+        return GSON.fromJson(response, BusinessDateResponse.class);
+    }
+
     public BusinessDateResponse getBusinessDate(final String type) {
         return ok(fineract().businessDateManagement.getBusinessDate(type));
     }
diff --git 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/Utils.java
 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/Utils.java
index aa6fe7bd8..c39cec3ca 100644
--- 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/Utils.java
+++ 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/Utils.java
@@ -461,4 +461,7 @@ public final class Utils {
         return new Gson().toJson(map);
     }
 
+    public static LocalDate getDateAsLocalDate(String dateAsString) {
+        return LocalDate.parse(dateAsString, dateFormatter);
+    }
 }

Reply via email to