FINERACT-1724 fix flaky testCatchUpInLockedInstanceLastCOBDateIsNotNull test
This commit is contained in:
committed by
Arnold Gálovics
parent
c65a763c7f
commit
03154f3101
+16
-1
@@ -25,6 +25,7 @@ import io.restassured.path.json.JsonPath;
|
|||||||
import io.restassured.specification.RequestSpecification;
|
import io.restassured.specification.RequestSpecification;
|
||||||
import io.restassured.specification.ResponseSpecification;
|
import io.restassured.specification.ResponseSpecification;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.Duration;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -46,6 +47,7 @@ import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
|
|||||||
import org.apache.fineract.integrationtests.common.loans.LoanTestLifecycleExtension;
|
import org.apache.fineract.integrationtests.common.loans.LoanTestLifecycleExtension;
|
||||||
import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
|
import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
|
||||||
import org.apache.fineract.integrationtests.inlinecob.InlineLoanCOBHelper;
|
import org.apache.fineract.integrationtests.inlinecob.InlineLoanCOBHelper;
|
||||||
|
import org.awaitility.Awaitility;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@@ -193,6 +195,7 @@ public class LoanCOBAccountLockCatchupInlineCOBTest {
|
|||||||
loanTransactionHelper = new LoanTransactionHelper(requestSpec, responseSpec);
|
loanTransactionHelper = new LoanTransactionHelper(requestSpec, responseSpec);
|
||||||
loanAccountLockHelper = new LoanAccountLockHelper(requestSpec, new ResponseSpecBuilder().expectStatusCode(202).build());
|
loanAccountLockHelper = new LoanAccountLockHelper(requestSpec, new ResponseSpecBuilder().expectStatusCode(202).build());
|
||||||
|
|
||||||
|
// create client
|
||||||
final Integer clientID = ClientHelper.createClient(requestSpec, responseSpec);
|
final Integer clientID = ClientHelper.createClient(requestSpec, responseSpec);
|
||||||
Assertions.assertNotNull(clientID);
|
Assertions.assertNotNull(clientID);
|
||||||
|
|
||||||
@@ -200,6 +203,7 @@ public class LoanCOBAccountLockCatchupInlineCOBTest {
|
|||||||
ChargesHelper.getLoanOverdueFeeJSONWithCalculationTypePercentage("1"));
|
ChargesHelper.getLoanOverdueFeeJSONWithCalculationTypePercentage("1"));
|
||||||
Assertions.assertNotNull(overdueFeeChargeId);
|
Assertions.assertNotNull(overdueFeeChargeId);
|
||||||
|
|
||||||
|
// create loan product
|
||||||
final Integer loanProductID = createLoanProduct(overdueFeeChargeId.toString());
|
final Integer loanProductID = createLoanProduct(overdueFeeChargeId.toString());
|
||||||
Assertions.assertNotNull(loanProductID);
|
Assertions.assertNotNull(loanProductID);
|
||||||
HashMap loanStatusHashMap;
|
HashMap loanStatusHashMap;
|
||||||
@@ -210,28 +214,39 @@ public class LoanCOBAccountLockCatchupInlineCOBTest {
|
|||||||
loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(requestSpec, responseSpec, loanID);
|
loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(requestSpec, responseSpec, loanID);
|
||||||
LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
|
LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
|
||||||
|
|
||||||
|
// approve loan
|
||||||
loanStatusHashMap = loanTransactionHelper.approveLoan("01 March 2020", loanID);
|
loanStatusHashMap = loanTransactionHelper.approveLoan("01 March 2020", loanID);
|
||||||
LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
|
LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
|
||||||
|
|
||||||
String loanDetails = loanTransactionHelper.getLoanDetails(requestSpec, responseSpec, loanID);
|
String loanDetails = loanTransactionHelper.getLoanDetails(requestSpec, responseSpec, loanID);
|
||||||
|
|
||||||
|
// disburse loan
|
||||||
loanStatusHashMap = loanTransactionHelper.disburseLoanWithNetDisbursalAmount("02 March 2020", loanID,
|
loanStatusHashMap = loanTransactionHelper.disburseLoanWithNetDisbursalAmount("02 March 2020", loanID,
|
||||||
JsonPath.from(loanDetails).get("netDisbursalAmount").toString());
|
JsonPath.from(loanDetails).get("netDisbursalAmount").toString());
|
||||||
LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
|
LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
|
||||||
|
|
||||||
|
// update business date 2020-03-02
|
||||||
BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.COB_DATE, LocalDate.of(2020, 3, 2));
|
BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.COB_DATE, LocalDate.of(2020, 3, 2));
|
||||||
|
|
||||||
|
// execute inline cob for the loan
|
||||||
inlineLoanCOBHelper.executeInlineCOB(List.of(loanID.longValue()));
|
inlineLoanCOBHelper.executeInlineCOB(List.of(loanID.longValue()));
|
||||||
GetLoansLoanIdResponse loan = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanID);
|
GetLoansLoanIdResponse loan = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanID);
|
||||||
Assertions.assertEquals(LocalDate.of(2020, 3, 2), loan.getLastClosedBusinessDate());
|
Assertions.assertEquals(LocalDate.of(2020, 3, 2), loan.getLastClosedBusinessDate());
|
||||||
|
|
||||||
|
// update business date to 2020-03-05
|
||||||
BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.BUSINESS_DATE, LocalDate.of(2020, 3, 5));
|
BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.BUSINESS_DATE, LocalDate.of(2020, 3, 5));
|
||||||
|
|
||||||
|
// apply lock on the loan
|
||||||
loanAccountLockHelper.placeSoftLockOnLoanAccount(loanID, "LOAN_INLINE_COB_PROCESSING", "Sample error");
|
loanAccountLockHelper.placeSoftLockOnLoanAccount(loanID, "LOAN_INLINE_COB_PROCESSING", "Sample error");
|
||||||
|
|
||||||
loanTransactionHelper = new LoanTransactionHelper(requestSpec, responseSpec);
|
loanTransactionHelper = new LoanTransactionHelper(requestSpec, responseSpec);
|
||||||
|
|
||||||
|
// execute catchup which sets the last cob date first 2020-03-04 and then 2020-03-05, as this loan is two
|
||||||
|
// days behind
|
||||||
loanCOBCatchUpHelper.executeLoanCOBCatchUp();
|
loanCOBCatchUpHelper.executeLoanCOBCatchUp();
|
||||||
|
|
||||||
Utils.conditionalSleepWithMaxWait(30, 5, () -> loanCOBCatchUpHelper.isLoanCOBCatchUpRunning());
|
Awaitility.await().atMost(Duration.ofSeconds(30)).with().pollInterval(Duration.ofSeconds(5)) //
|
||||||
|
.until(() -> loanCOBCatchUpHelper.isLoanCOBCatchUpFinishedFor(LocalDate.of(2020, 3, 4))); //
|
||||||
|
|
||||||
loan = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanID);
|
loan = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanID);
|
||||||
Assertions.assertEquals(LocalDate.of(2020, 3, 4), loan.getLastClosedBusinessDate());
|
Assertions.assertEquals(LocalDate.of(2020, 3, 4), loan.getLastClosedBusinessDate());
|
||||||
|
|||||||
+13
@@ -18,12 +18,16 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.fineract.integrationtests.common.loans;
|
package org.apache.fineract.integrationtests.common.loans;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.fineract.client.models.GetOldestCOBProcessedLoanResponse;
|
import org.apache.fineract.client.models.GetOldestCOBProcessedLoanResponse;
|
||||||
import org.apache.fineract.client.models.IsCatchUpRunningResponse;
|
import org.apache.fineract.client.models.IsCatchUpRunningResponse;
|
||||||
import org.apache.fineract.integrationtests.client.IntegrationTest;
|
import org.apache.fineract.integrationtests.client.IntegrationTest;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import retrofit2.Response;
|
import retrofit2.Response;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
public class LoanCOBCatchUpHelper extends IntegrationTest {
|
public class LoanCOBCatchUpHelper extends IntegrationTest {
|
||||||
|
|
||||||
public LoanCOBCatchUpHelper() {}
|
public LoanCOBCatchUpHelper() {}
|
||||||
@@ -33,6 +37,15 @@ public class LoanCOBCatchUpHelper extends IntegrationTest {
|
|||||||
return Boolean.TRUE.equals(Objects.requireNonNull(response.body()).getIsCatchUpRunning());
|
return Boolean.TRUE.equals(Objects.requireNonNull(response.body()).getIsCatchUpRunning());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isLoanCOBCatchUpFinishedFor(@NotNull LocalDate cobBusinessDate) {
|
||||||
|
Response<IsCatchUpRunningResponse> response = executeGetLoanCatchUpStatus();
|
||||||
|
IsCatchUpRunningResponse isCatchUpRunningResponse = Objects.requireNonNull(response.body());
|
||||||
|
GetOldestCOBProcessedLoanResponse getOldestCOBProcessedLoanResponse = executeRetrieveOldestCOBProcessedLoan();
|
||||||
|
|
||||||
|
return !Boolean.TRUE.equals(isCatchUpRunningResponse.getIsCatchUpRunning())
|
||||||
|
&& cobBusinessDate.equals(getOldestCOBProcessedLoanResponse.getCobProcessedDate());
|
||||||
|
}
|
||||||
|
|
||||||
public Response<Void> executeLoanCOBCatchUp() {
|
public Response<Void> executeLoanCOBCatchUp() {
|
||||||
return okR(fineract().loanCobCatchUpApi.executeLoanCOBCatchUp());
|
return okR(fineract().loanCobCatchUpApi.executeLoanCOBCatchUp());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user