FINERACT-2070: Update test configurations

This commit is contained in:
Adam Saghy
2024-11-09 20:04:13 +01:00
parent 17a4392c26
commit 64976f1eb4
28 changed files with 1021 additions and 362 deletions
@@ -1006,7 +1006,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(name48)//
.supportedInterestRefundTypes(Arrays.asList("MERCHANT_ISSUED_REFUND", "PAYOUT_REFUND"))//
.paymentAllocation(List.of(//
createPaymentAllocation("DEFAULT", "LAST_INSTALLMENT")));//
createPaymentAllocation("DEFAULT", "NEXT_INSTALLMENT")));//
Response<PostLoanProductsResponse> responseLoanProductsRequestLP2AdvancedpaymentInterestEmiActualActualInterestRefundInterestRecalculation = loanProductsApi
.createLoanProduct(loanProductsRequestLP2AdvancedpaymentInterestEmiActualActualInterestRefundRecalculation).execute();
TestContext.INSTANCE.set(
@@ -101,7 +101,7 @@ public class EventAssertion {
} else {
eventMessage = (EventMessage<R>) new EmptyEventMessage();
}
log.info("Assert event: {}", eventMessage.getIdempotencyKey());
log.debug("Assert event: {}", eventMessage.getIdempotencyKey());
return new EventAssertionBuilder<>(eventMessage);
}
@@ -167,7 +167,11 @@ public class EventAssertion {
public EventAssertionBuilder<R> isEqualTo(BigDecimal value) {
if (eventProperties.isEventVerificationEnabled()) {
Assertions.assertThat(extractedValue).isEqualByComparingTo(value);
if (extractedValue == null) {
Assertions.assertThat(extractedValue).isEqualTo(value);
} else {
Assertions.assertThat(extractedValue).isEqualByComparingTo(value);
}
}
return new EventAssertionBuilder<>(eventMessage);
}
@@ -128,9 +128,8 @@ public class EventCheckHelper {
eventAssertion.assertEvent(LoanCreatedEvent.class, createLoanResponse.body().getLoanId())//
.extractingData(LoanAccountDataV1::getId).isEqualTo(body.getId())//
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getStatus().getId()).isEqualTo(body.getStatus().getId())//
.extractingData(LoanAccountDataV1::getClientId).isEqualTo(Long.valueOf(body.getClientId()))//
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getPrincipal().longValue())
.isEqualTo(body.getPrincipal().longValue())//
.extractingData(LoanAccountDataV1::getClientId).isEqualTo(body.getClientId())//
.extractingBigDecimal(LoanAccountDataV1::getPrincipal).isEqualTo(body.getPrincipal())//
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getSummary().getCurrency().getCode())
.isEqualTo(body.getCurrency().getCode());//
}
@@ -145,8 +144,7 @@ public class EventCheckHelper {
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getStatus().getId()).isEqualTo(body.getStatus().getId())//
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getStatus().getCode()).isEqualTo(body.getStatus().getCode())//
.extractingData(LoanAccountDataV1::getClientId).isEqualTo(Long.valueOf(body.getClientId()))//
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getApprovedPrincipal().longValue())
.isEqualTo(body.getApprovedPrincipal().longValue())//
.extractingBigDecimal(LoanAccountDataV1::getApprovedPrincipal).isEqualTo(BigDecimal.valueOf(body.getApprovedPrincipal()))//
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getTimeline().getApprovedOnDate())//
.isEqualTo(FORMATTER_EVENTS.format(body.getTimeline().getApprovedOnDate()))//
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getSummary().getCurrency().getCode())
@@ -239,9 +237,9 @@ public class EventCheckHelper {
}
private boolean areBigDecimalValuesEqual(BigDecimal actual, BigDecimal expected) {
log.info("--- Checking BigDecimal values.... ---");
log.info("Actual: {}", actual);
log.info("Expected: {}", expected);
log.debug("--- Checking BigDecimal values.... ---");
log.debug("Actual: {}", actual);
log.debug("Expected: {}", expected);
return actual.compareTo(expected) == 0;
}
@@ -261,8 +259,7 @@ public class EventCheckHelper {
eventAssertion.assertEvent(LoanDisbursalTransactionEvent.class, disbursementTransaction.getId())//
.extractingData(LoanTransactionDataV1::getLoanId).isEqualTo(body.getId())//
.extractingData(LoanTransactionDataV1::getDate).isEqualTo(FORMATTER_EVENTS.format(disbursementTransaction.getDate()))//
.extractingData(loanTransactionDataV1 -> loanTransactionDataV1.getAmount().longValue())
.isEqualTo(disbursementTransaction.getAmount().longValue());//
.extractingBigDecimal(LoanTransactionDataV1::getAmount).isEqualTo(BigDecimal.valueOf(disbursementTransaction.getAmount()));//
}
public EventAssertion.EventAssertionBuilder<LoanTransactionDataV1> transactionEventCheck(
@@ -291,8 +288,7 @@ public class EventCheckHelper {
EventAssertion.EventAssertionBuilder<LoanTransactionDataV1> eventBuilder = eventAssertion.assertEvent(eventClass, transactionId);
eventBuilder.extractingData(LoanTransactionDataV1::getLoanId).isEqualTo(loanDetailsResponse.body().getId())//
.extractingData(LoanTransactionDataV1::getDate).isEqualTo(FORMATTER_EVENTS.format(transactionFound.getDate()))//
.extractingData(loanTransactionDataV1 -> loanTransactionDataV1.getAmount().longValue())
.isEqualTo(transactionFound.getAmount().longValue())//
.extractingBigDecimal(LoanTransactionDataV1::getAmount).isEqualTo(BigDecimal.valueOf(transactionFound.getAmount()))//
.extractingData(LoanTransactionDataV1::getExternalOwnerId).isEqualTo(externalOwnerId);//
return eventBuilder;
}
@@ -316,13 +312,15 @@ public class EventCheckHelper {
.isEqualTo(filtered.getOwner().getExternalId()).extractingData(LoanOwnershipTransferDataV1::getTransferExternalId)
.isEqualTo(filtered.getTransferExternalId()).extractingData(LoanOwnershipTransferDataV1::getSettlementDate)
.isEqualTo(FORMATTER_EVENTS.format(filtered.getSettlementDate()))
.extractingData(LoanOwnershipTransferDataV1::getTotalOutstandingBalanceAmount)
.extractingBigDecimal(LoanOwnershipTransferDataV1::getTotalOutstandingBalanceAmount)
.isEqualTo(totalOutstandingBalanceAmountExpected)
.extractingData(LoanOwnershipTransferDataV1::getOutstandingPrincipalPortion).isEqualTo(outstandingPrincipalPortionExpected)
.extractingData(LoanOwnershipTransferDataV1::getOutstandingFeePortion).isEqualTo(outstandingFeePortionExpected)
.extractingData(LoanOwnershipTransferDataV1::getOutstandingPenaltyPortion).isEqualTo(outstandingPenaltyPortionExpected)
.extractingData(LoanOwnershipTransferDataV1::getOutstandingInterestPortion).isEqualTo(outstandingInterestPortionExpected)
.extractingData(LoanOwnershipTransferDataV1::getOverPaymentPortion).isEqualTo(overPaymentPortionExpected);
.extractingBigDecimal(LoanOwnershipTransferDataV1::getOutstandingPrincipalPortion)
.isEqualTo(outstandingPrincipalPortionExpected).extractingBigDecimal(LoanOwnershipTransferDataV1::getOutstandingFeePortion)
.isEqualTo(outstandingFeePortionExpected).extractingBigDecimal(LoanOwnershipTransferDataV1::getOutstandingPenaltyPortion)
.isEqualTo(outstandingPenaltyPortionExpected)
.extractingBigDecimal(LoanOwnershipTransferDataV1::getOutstandingInterestPortion)
.isEqualTo(outstandingInterestPortionExpected).extractingBigDecimal(LoanOwnershipTransferDataV1::getOverPaymentPortion)
.isEqualTo(overPaymentPortionExpected);
}
public void loanOwnershipTransferBusinessEventWithStatusCheck(Long loanId, Long transferId, String transferStatus,
@@ -358,15 +356,17 @@ public class EventCheckHelper {
.isEqualTo(filtered.getOwner().getExternalId()).extractingData(LoanOwnershipTransferDataV1::getTransferExternalId)
.isEqualTo(filtered.getTransferExternalId()).extractingData(LoanOwnershipTransferDataV1::getSettlementDate)
.isEqualTo(FORMATTER_EVENTS.format(filtered.getSettlementDate()))
.extractingData(LoanOwnershipTransferDataV1::getTotalOutstandingBalanceAmount)
.extractingBigDecimal(LoanOwnershipTransferDataV1::getTotalOutstandingBalanceAmount)
.isEqualTo(totalOutstandingBalanceAmountExpected)
.extractingData(LoanOwnershipTransferDataV1::getOutstandingPrincipalPortion).isEqualTo(outstandingPrincipalPortionExpected)
.extractingData(LoanOwnershipTransferDataV1::getOutstandingFeePortion).isEqualTo(outstandingFeePortionExpected)
.extractingData(LoanOwnershipTransferDataV1::getOutstandingPenaltyPortion).isEqualTo(outstandingPenaltyPortionExpected)
.extractingData(LoanOwnershipTransferDataV1::getOutstandingInterestPortion).isEqualTo(outstandingInterestPortionExpected)
.extractingData(LoanOwnershipTransferDataV1::getOverPaymentPortion).isEqualTo(overPaymentPortionExpected)
.extractingData(LoanOwnershipTransferDataV1::getTransferStatus).isEqualTo(transferStatusExpected)
.extractingData(LoanOwnershipTransferDataV1::getTransferStatusReason).isEqualTo(transferStatusReasonExpected);
.extractingBigDecimal(LoanOwnershipTransferDataV1::getOutstandingPrincipalPortion)
.isEqualTo(outstandingPrincipalPortionExpected).extractingBigDecimal(LoanOwnershipTransferDataV1::getOutstandingFeePortion)
.isEqualTo(outstandingFeePortionExpected).extractingBigDecimal(LoanOwnershipTransferDataV1::getOutstandingPenaltyPortion)
.isEqualTo(outstandingPenaltyPortionExpected)
.extractingBigDecimal(LoanOwnershipTransferDataV1::getOutstandingInterestPortion)
.isEqualTo(outstandingInterestPortionExpected).extractingBigDecimal(LoanOwnershipTransferDataV1::getOverPaymentPortion)
.isEqualTo(overPaymentPortionExpected).extractingData(LoanOwnershipTransferDataV1::getTransferStatus)
.isEqualTo(transferStatusExpected).extractingData(LoanOwnershipTransferDataV1::getTransferStatusReason)
.isEqualTo(transferStatusReasonExpected);
}
public void loanAccountSnapshotBusinessEventCheck(Long loanId, Long transferId) throws IOException {
@@ -389,17 +389,17 @@ public class EventCheckHelper {
eventAssertion.assertEvent(LoanAccountSnapshotEvent.class, loanId).extractingData(LoanAccountDataV1::getId).isEqualTo(loanId)
.extractingData(LoanAccountDataV1::getExternalOwnerId).isEqualTo(ownerExternalIdExpected)
.extractingData(LoanAccountDataV1::getSettlementDate).isEqualTo(settlementDateExpected)
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getSummary().getTotalOutstanding())
.extractingBigDecimal(loanAccountDataV1 -> loanAccountDataV1.getSummary().getTotalOutstanding())
.isEqualTo(totalOutstandingBalanceAmountExpected)
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getSummary().getPrincipalOutstanding())
.extractingBigDecimal(loanAccountDataV1 -> loanAccountDataV1.getSummary().getPrincipalOutstanding())
.isEqualTo(outstandingPrincipalPortionExpected)
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getSummary().getFeeChargesOutstanding())
.extractingBigDecimal(loanAccountDataV1 -> loanAccountDataV1.getSummary().getFeeChargesOutstanding())
.isEqualTo(outstandingFeePortionExpected)
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getSummary().getPenaltyChargesOutstanding())
.extractingBigDecimal(loanAccountDataV1 -> loanAccountDataV1.getSummary().getPenaltyChargesOutstanding())
.isEqualTo(outstandingPenaltyPortionExpected)
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getSummary().getInterestOutstanding())
.extractingBigDecimal(loanAccountDataV1 -> loanAccountDataV1.getSummary().getInterestOutstanding())
.isEqualTo(outstandingInterestPortionExpected)
.extractingData(loanAccountDataV1 -> loanAccountDataV1.getSummary().getTotalOverdue())
.extractingBigDecimal(loanAccountDataV1 -> loanAccountDataV1.getSummary().getTotalOverdue())
.isEqualTo(overPaymentPortionExpected);
}
@@ -435,15 +435,15 @@ public class EventCheckHelper {
pausePeriodEndExpected))//
.isEqualTo(pausePeriodEndExpected);//
log.info("LoanAccountDelinquencyPauseChangedBusinessEvent -> isActiveActual:\s{}", isActiveActual);
log.info("LoanAccountDelinquencyPauseChangedBusinessEvent -> pausePeriodStartActual:\s{}", pausePeriodStartActual);
log.info("LoanAccountDelinquencyPauseChangedBusinessEvent -> pausePeriodEndActual:\s{}", pausePeriodEndActual);
log.debug("LoanAccountDelinquencyPauseChangedBusinessEvent -> isActiveActual:\s{}", isActiveActual);
log.debug("LoanAccountDelinquencyPauseChangedBusinessEvent -> pausePeriodStartActual:\s{}", pausePeriodStartActual);
log.debug("LoanAccountDelinquencyPauseChangedBusinessEvent -> pausePeriodEndActual:\s{}", pausePeriodEndActual);
}
return null;
});
}
public void installmentLevelDelinquencyRangeChangeEventCheck(Long loanId) throws IOException {
public void installmentLevelDelinquencyRangeChangeEventCheck(Long loanId) {
eventAssertion.assertEvent(LoanDelinquencyRangeChangeEvent.class, loanId).extractingData(loanAccountDelinquencyRangeDataV1 -> {
// check if sum of total amounts equal the sum of amount types in installmentDelinquencyBuckets
BigDecimal totalAmountSum = loanAccountDelinquencyRangeDataV1.getInstallmentDelinquencyBuckets().stream()//
@@ -471,13 +471,13 @@ public class EventCheckHelper {
assertThat(totalAmountSum)
.as(ErrorMessageHelper.wrongAmountInLoanDelinquencyRangeChangedEventTotalAmount(totalAmountSum, totalAmountSumActual))
.isEqualTo(totalAmountSumActual);
.isEqualByComparingTo(totalAmountSumActual);
log.info("Nr of installment level delinquency buckets: {}",
log.debug("Nr of installment level delinquency buckets: {}",
loanAccountDelinquencyRangeDataV1.getInstallmentDelinquencyBuckets().size());
log.info("Buckets:");
log.debug("Buckets:");
loanAccountDelinquencyRangeDataV1.getInstallmentDelinquencyBuckets().forEach(e -> {
log.info("{}\s-\sTotal amount:\s{}", e.getDelinquencyRange().getClassification(), e.getAmount().getTotalAmount());
log.debug("{}\s-\sTotal amount:\s{}", e.getDelinquencyRange().getClassification(), e.getAmount().getTotalAmount());
});
return null;
@@ -62,7 +62,10 @@ public class JobService {
private void waitUntilJobIsFinished(Job job) {
String jobName = job.getName();
await().atMost(Duration.ofMinutes(2)).alias("%s didn't finish on time".formatted(jobName)).pollInterval(Duration.ofSeconds(10))
await().atMost(Duration.ofMinutes(2)) //
.alias("%s didn't finish on time".formatted(jobName)) //
.pollInterval(Duration.ofSeconds(5)) //
.pollDelay(Duration.ofSeconds(5)) //
.until(() -> {
log.info("Waiting for job {} to finish", jobName);
Long jobId = jobResolver.resolve(job);
@@ -253,10 +253,10 @@ public class AssetExternalizationStepDef extends AbstractStepDef {
Long loanIdActual = body.getSubResourceId();
String transferExternalIdActual = body.getResourceExternalId();
log.info("loanId: {}", loanId);
log.info("ownerExternalIdStored: {}", ownerExternalIdStored);
log.info("transferExternalId generated by user: {}", transferExternalIdExpected);
log.info("transferExternalIdActual: {}", transferExternalIdActual);
log.debug("loanId: {}", loanId);
log.debug("ownerExternalIdStored: {}", ownerExternalIdStored);
log.debug("transferExternalId generated by user: {}", transferExternalIdExpected);
log.debug("transferExternalIdActual: {}", transferExternalIdActual);
assertThat(loanIdActual).as(ErrorMessageHelper.wrongDataInAssetExternalizationResponse(loanIdActual, loanId)).isEqualTo(loanId);
assertThat(body.getResourceId()).isNotNull();
@@ -405,8 +405,8 @@ public class AssetExternalizationStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
@Then("Asset externalization transaction with the following data results a {int} error and {string} error message")
@@ -453,8 +453,8 @@ public class AssetExternalizationStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
@Then("Asset externalization SALES transaction with ownerExternalId = null and the following data results a {int} error and {string} error message")
@@ -488,8 +488,8 @@ public class AssetExternalizationStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
@Then("The latest asset externalization transaction with {string} status has the following TRANSFER Journal entries:")
@@ -528,10 +528,10 @@ public class AssetExternalizationStepDef extends AbstractStepDef {
.isEqualTo(linesExpected);
}
log.info("loanId: {}", journalEntriesOfTransfer.body().getTransferData().getLoan().getLoanId());
log.info("ownerExternalId: {}", journalEntriesOfTransfer.body().getTransferData().getOwner().getExternalId());
log.info("transferId: {}", lastTransferIdByStatus);
log.info("transferExternalId: {}", journalEntriesOfTransfer.body().getTransferData().getTransferExternalId());
log.debug("loanId: {}", journalEntriesOfTransfer.body().getTransferData().getLoan().getLoanId());
log.debug("ownerExternalId: {}", journalEntriesOfTransfer.body().getTransferData().getOwner().getExternalId());
log.debug("transferId: {}", lastTransferIdByStatus);
log.debug("transferExternalId: {}", journalEntriesOfTransfer.body().getTransferData().getTransferExternalId());
}
private Long getLastTransferIdByStatus(Long loanId, String status) throws IOException {
@@ -589,7 +589,7 @@ public class AssetExternalizationStepDef extends AbstractStepDef {
.isEqualTo(linesExpected);
}
log.info("ownerExternalId: {}", journalEntriesOfOwner.body().getOwnerData().getExternalId());
log.debug("ownerExternalId: {}", journalEntriesOfOwner.body().getOwnerData().getExternalId());
}
@Then("LoanOwnershipTransferBusinessEvent is created")
@@ -633,10 +633,10 @@ public class AssetExternalizationStepDef extends AbstractStepDef {
Long loanIdActual = body.getSubResourceId();
String transferExternalIdActual = body.getResourceExternalId();
log.info("loanId: {}", loanId);
log.info("ownerExternalIdStored: {}", ownerExternalIdStored);
log.info("transferExternalId generated by user: {}", transferExternalIdExpected);
log.info("transferExternalIdActual: {}", transferExternalIdActual);
log.debug("loanId: {}", loanId);
log.debug("ownerExternalIdStored: {}", ownerExternalIdStored);
log.debug("transferExternalId generated by user: {}", transferExternalIdExpected);
log.debug("transferExternalIdActual: {}", transferExternalIdActual);
assertThat(loanIdActual).as(ErrorMessageHelper.wrongDataInAssetExternalizationResponse(loanIdActual, loanId)).isEqualTo(loanId);
assertThat(body.getResourceId()).isNotNull();
@@ -488,11 +488,11 @@ public class BatchApiStepDef extends AbstractStepDef {
.execute();
if (batchResponseList.errorBody() != null) {
log.info("ERROR: {}", batchResponseList.errorBody().string());
log.debug("ERROR: {}", batchResponseList.errorBody().string());
}
if (batchResponseList.body() != null) {
log.info("Body: {}", batchResponseList.body());
log.debug("Body: {}", batchResponseList.body());
}
testContext().set(TestContextKey.BATCH_API_CALL_RESPONSE, batchResponseList);
@@ -554,8 +554,8 @@ public class BatchApiStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
@When("Batch API call with steps: queryDatatable, updateDatatable runs, with empty queryDatatable response")
@@ -150,7 +150,7 @@ public class BusinessStepStepDef extends AbstractStepDef {
}
private void setBackBusinessStepsToOriginal() throws IOException {
log.info("Setting back Business steps to original...");
log.debug("Setting back Business steps to original...");
UpdateBusinessStepConfigRequest request = new UpdateBusinessStepConfigRequest().businessSteps(ORIGINAL_COB_BUSINESS_STEPS);
Response<Void> response = businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS, request)
@@ -172,7 +172,7 @@ public class BusinessStepStepDef extends AbstractStepDef {
.map(BusinessStep::getStepName)//
.collect(Collectors.toList());//
log.info("Business steps has been CHANGED to the following:");
changes.forEach(e -> log.info(e));
log.debug("Business steps has been CHANGED to the following:");
changes.forEach(e -> log.debug(e));
}
}
@@ -60,8 +60,8 @@ public class LoanCOBStepDef extends AbstractStepDef {
LocalDate cobDate = response.body().getCobBusinessDate();
LocalDate cobDateMinusOne = cobDate.minusDays(1);
LocalDate cobProcessedDate = response.body().getCobProcessedDate();
log.info("cobDateMinusOne: {}", cobDateMinusOne);
log.info("cobProcessedDate: {}", cobProcessedDate);
log.debug("cobDateMinusOne: {}", cobDateMinusOne);
log.debug("cobProcessedDate: {}", cobProcessedDate);
boolean result = cobDateMinusOne.isAfter(cobProcessedDate);
assertThat(result).as(ErrorMessageHelper.wrongLastCOBProcessedLoanDate(cobProcessedDate, cobDateMinusOne)).isTrue();
@@ -74,7 +74,7 @@ public class LoanCOBStepDef extends AbstractStepDef {
int size = response.body().getContent().size();
assertThat(size).as(ErrorMessageHelper.listOfLockedLoansNotEmpty(response)).isEqualTo(0);
log.info("Size of List of the locked loans: {}", size);
log.debug("Size of List of the locked loans: {}", size);
}
@Then("The loan account is not locked")
@@ -118,8 +118,8 @@ public class LoanChargeAdjustmentStepDef extends AbstractStepDef {
.as(ErrorMessageHelper.wrongErrorMessageInFailedChargeAdjustment(developerMessageActual, developerMessageExpected))
.isEqualTo(developerMessageExpected);
log.info("Error code: {}", httpStatusCodeActual);
log.info("Error message: {}", developerMessageActual);
log.debug("Error code: {}", httpStatusCodeActual);
log.debug("Error message: {}", developerMessageActual);
}
@When("Admin reverts the charge adjustment which was raised on {string} with {double} EUR transaction amount")
@@ -26,6 +26,7 @@ import io.cucumber.java.en.And;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.format.DateTimeFormatter;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
@@ -258,9 +259,9 @@ public class LoanChargeStepDef extends AbstractStepDef {
GetLoansLoanIdChargesChargeIdResponse body = chargeDetails.body();
eventAssertion.assertEvent(LoanAddChargeEvent.class, loanChargeResponse.body().getResourceId())
.extractingData(LoanChargeDataV1::getName).isEqualTo(body.getName())
.extractingData(loanChargeDataV1 -> loanChargeDataV1.getAmount().longValue()).isEqualTo(body.getAmount().longValue())
.extractingData(LoanChargeDataV1::getDueDate).isEqualTo(formatter.format(body.getDueDate()));
.extractingData(LoanChargeDataV1::getName).isEqualTo(body.getName()).extractingBigDecimal(LoanChargeDataV1::getAmount)
.isEqualTo(BigDecimal.valueOf(body.getAmount())).extractingData(LoanChargeDataV1::getDueDate)
.isEqualTo(formatter.format(body.getDueDate()));
}
@Then("Loan charge transaction with the following data results a {int} error and {string} error message")
@@ -300,7 +301,7 @@ public class LoanChargeStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
}
@@ -273,8 +273,8 @@ public class LoanDelinquencyStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
@When("Admin initiate a DELINQUENCY RESUME with startDate: {string}")
@@ -657,7 +657,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef {
Long loanLevelDelinquencyRangeIdExpected = delinquencyRange.getId();
String loanLevelDelinquencyRangeExpected = delinquencyRange.getClassification();
String loanLevelDelinquentDateExpected = FORMATTER.format(delinquent.getDelinquentDate());
BigDecimal loanLevelTotalAmountExpected = new BigDecimal(delinquent.getDelinquentAmount());
BigDecimal loanLevelTotalAmountExpected = BigDecimal.valueOf(delinquent.getDelinquentAmount());
assertThat(loanLevelDelinquencyRangeId)//
.as(ErrorMessageHelper.wrongValueInLoanDelinquencyRangeChangeBusinessEvent4(loanLevelDelinquencyRangeId,
@@ -674,7 +674,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef {
assertThat(loanLevelTotalAmount)//
.as(ErrorMessageHelper.wrongValueInLoanDelinquencyRangeChangeBusinessEvent6(loanLevelTotalAmount,
loanLevelTotalAmountExpected))//
.isEqualTo(loanLevelTotalAmountExpected);//
.isEqualByComparingTo(loanLevelTotalAmountExpected);//
List<GetLoansLoanIdLoanInstallmentLevelDelinquency> installmentLevelDelinquencyBucketsExpected = delinquent
.getInstallmentLevelDelinquency();
@@ -703,7 +703,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef {
assertThat(installmentLevelTotalAmount)//
.as(ErrorMessageHelper.wrongValueInLoanDelinquencyRangeChangeBusinessEvent3(installmentLevelTotalAmount,
installmentLevelTotalAmountExpected))//
.isEqualTo(installmentLevelTotalAmountExpected);//
.isEqualByComparingTo(installmentLevelTotalAmountExpected);//
}
return null;
});
@@ -728,8 +728,8 @@ public class LoanDelinquencyStepDef extends AbstractStepDef {
.as(ErrorMessageHelper.wrongDataInDelinquentLastRepaymentDate(actualLastRepaymentDate, expectedLastRepaymentDate))//
.isEqualTo(expectedLastRepaymentDate);//
log.info("loanDetails.delinquent.lastRepaymentAmount: {}", actualLastRepaymentAmount);
log.info("loanDetails.delinquent.lastRepaymentDate: {}", actualLastRepaymentDate);
log.debug("loanDetails.delinquent.lastRepaymentAmount: {}", actualLastRepaymentAmount);
log.debug("loanDetails.delinquent.lastRepaymentDate: {}", actualLastRepaymentDate);
}
private List<String> fetchValuesOfDelinquencyPausePeriods(List<String> header, GetLoansLoanIdDelinquencyPausePeriod t) {
@@ -757,8 +757,8 @@ public class LoanDelinquencyStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
@Then("LoanDelinquencyRangeChangeBusinessEvent is created")
@@ -544,7 +544,7 @@ public class LoanRepaymentStepDef extends AbstractStepDef {
.retrieveTransactionTemplate(loanId1, "prepayLoan", DATE_FORMAT, transactionDate, DEFAULT_LOCALE).execute();
Double transactionAmount = response.body().getAmount();
log.info("%n--- Loan Pay-off with amount: {} ---", transactionAmount);
log.debug("%n--- Loan Pay-off with amount: {} ---", transactionAmount);
makeRepayment(DEFAULT_REPAYMENT_TYPE, transactionDate, transactionAmount, null);
}
@@ -572,9 +572,10 @@ public class LoanRepaymentStepDef extends AbstractStepDef {
eventAssertionBuilder
.extractingData(loanTransactionAdjustmentDataV1 -> loanTransactionAdjustmentDataV1.getTransactionToAdjust().getId())
.isEqualTo(targetTransaction.getId());
eventAssertionBuilder.extractingData(
loanTransactionAdjustmentDataV1 -> loanTransactionAdjustmentDataV1.getTransactionToAdjust().getAmount().doubleValue())
.isEqualTo(targetTransaction.getAmount());
eventAssertionBuilder
.extractingBigDecimal(
loanTransactionAdjustmentDataV1 -> loanTransactionAdjustmentDataV1.getTransactionToAdjust().getAmount())
.isEqualTo(BigDecimal.valueOf(targetTransaction.getAmount()));
eventAssertionBuilder
.extractingData(
loanTransactionAdjustmentDataV1 -> loanTransactionAdjustmentDataV1.getTransactionToAdjust().getManuallyReversed())
@@ -587,9 +588,10 @@ public class LoanRepaymentStepDef extends AbstractStepDef {
eventAssertionBuilder
.extractingData(loanTransactionAdjustmentDataV1 -> loanTransactionAdjustmentDataV1.getNewTransactionDetail().getId())
.isEqualTo(repaymentAdjustmentResponse.body().getResourceId());
eventAssertionBuilder.extractingData(
loanTransactionAdjustmentDataV1 -> loanTransactionAdjustmentDataV1.getNewTransactionDetail().getAmount().doubleValue())
.isEqualTo(amountValue);
eventAssertionBuilder
.extractingBigDecimal(
loanTransactionAdjustmentDataV1 -> loanTransactionAdjustmentDataV1.getNewTransactionDetail().getAmount())
.isEqualTo(BigDecimal.valueOf(amountValue));
eventAssertionBuilder.extractingData(
loanTransactionAdjustmentDataV1 -> loanTransactionAdjustmentDataV1.getNewTransactionDetail().getExternalOwnerId())
.isEqualTo(externalOwnerId);
@@ -163,7 +163,7 @@ public class LoanRescheduleStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
}
@@ -44,7 +44,6 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.avro.loan.v1.LoanAccountDataV1;
@@ -386,8 +385,8 @@ public class LoanStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
@When("Admin creates a fully customized loan with the following data:")
@@ -548,8 +547,8 @@ public class LoanStepDef extends AbstractStepDef {
assertThat(errorCode).as(ErrorMessageHelper.dateFailureErrorCodeMsg()).isEqualTo(403);
assertThat(errorMessage).isEqualTo(ErrorMessageHelper.downpaymentDisabledOnProductErrorCodeMsg());
log.info("Error code: {}", errorCode);
log.info("Error message: {}}", errorMessage);
log.debug("Error code: {}", errorCode);
log.debug("Error message: {}}", errorMessage);
}
@When("Admin creates a fully customized loan with auto downpayment {double}% and with the following data:")
@@ -845,8 +844,8 @@ public class LoanStepDef extends AbstractStepDef {
assertThat(errorCodeActual).as(ErrorMessageHelper.wrongErrorCode(errorCodeActual, errorCodeExpected)).isEqualTo(errorCodeExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
@When("Admin creates a fully customized loan with Advanced payment allocation and with product no Advanced payment allocation set results an error:")
@@ -927,8 +926,8 @@ public class LoanStepDef extends AbstractStepDef {
assertThat(errorMessageActual).as(ErrorMessageHelper.wrongErrorMessage(errorMessageActual, errorMessageExpected))
.isEqualTo(errorMessageExpected);
log.info("ERROR CODE: {}", errorCodeActual);
log.info("ERROR MESSAGE: {}", errorMessageActual);
log.debug("ERROR CODE: {}", errorCodeActual);
log.debug("ERROR MESSAGE: {}", errorMessageActual);
}
@When("Admin creates a fully customized loan with installment level delinquency and with the following data:")
@@ -1519,7 +1518,7 @@ public class LoanStepDef extends AbstractStepDef {
assertThat(errorDetails.getHttpStatusCode()).as(ErrorMessageHelper.dateFailureErrorCodeMsg()).isEqualTo(403);
assertThat(developerMessage).matches(ErrorMessageHelper.disburseMaxAmountFailure());
log.info("Error message: {}", developerMessage);
log.debug("Error message: {}", developerMessage);
}
@Then("Loan has {double} outstanding amount")
@@ -2073,18 +2072,24 @@ public class LoanStepDef extends AbstractStepDef {
@When("Admin checks that Loan COB is running until the current business date")
public void checkLoanCOBCatchUpRunningUntilCOBBusinessDate() {
await().pollInterval(2, TimeUnit.SECONDS).atMost(Duration.ofSeconds(20)).until(() -> {
Response<IsCatchUpRunningResponse> isCatchUpRunningResponse = loanCobCatchUpApi.isCatchUpRunning().execute();
ErrorHelper.checkSuccessfulApiCall(isCatchUpRunningResponse);
IsCatchUpRunningResponse isCatchUpRunning = isCatchUpRunningResponse.body();
return isCatchUpRunning.getIsCatchUpRunning();
});
await().pollInterval(2, TimeUnit.SECONDS).atMost(Duration.ofMinutes(4)).until(() -> {
Response<IsCatchUpRunningResponse> isCatchUpRunningResponse = loanCobCatchUpApi.isCatchUpRunning().execute();
ErrorHelper.checkSuccessfulApiCall(isCatchUpRunningResponse);
IsCatchUpRunningResponse isCatchUpRunning = isCatchUpRunningResponse.body();
return !isCatchUpRunning.getIsCatchUpRunning();
});
await().atMost(Duration.ofMinutes(2)) //
.pollInterval(Duration.ofSeconds(5)) //
.pollDelay(Duration.ofSeconds(5)) //
.until(() -> {
Response<IsCatchUpRunningResponse> isCatchUpRunningResponse = loanCobCatchUpApi.isCatchUpRunning().execute();
ErrorHelper.checkSuccessfulApiCall(isCatchUpRunningResponse);
IsCatchUpRunningResponse isCatchUpRunning = isCatchUpRunningResponse.body();
return isCatchUpRunning.getIsCatchUpRunning();
});
await().atMost(Duration.ofMinutes(4)) //
.pollInterval(Duration.ofSeconds(5)) //
.pollDelay(Duration.ofSeconds(5)) //
.until(() -> {
Response<IsCatchUpRunningResponse> isCatchUpRunningResponse = loanCobCatchUpApi.isCatchUpRunning().execute();
ErrorHelper.checkSuccessfulApiCall(isCatchUpRunningResponse);
IsCatchUpRunningResponse isCatchUpRunning = isCatchUpRunningResponse.body();
return !isCatchUpRunning.getIsCatchUpRunning();
});
}
@Then("Loan's actualMaturityDate is {string}")
@@ -2289,7 +2294,7 @@ public class LoanStepDef extends AbstractStepDef {
String futureInstallmentAllocationRuleNew) throws IOException {
DefaultLoanProduct product = DefaultLoanProduct.valueOf(loanProductName);
Long loanProductId = loanProductResolver.resolve(product);
log.info("loanProductId: {}", loanProductId);
log.debug("loanProductId: {}", loanProductId);
Response<GetLoanProductsProductIdResponse> loanProductDetails = loanProductsApi.retrieveLoanProductDetails(loanProductId).execute();
ErrorHelper.checkSuccessfulApiCall(loanProductDetails);
@@ -2319,7 +2324,7 @@ public class LoanStepDef extends AbstractStepDef {
public void editRepaymentStartDateType(String loanProductName, String repaymentStartDateType) throws IOException {
DefaultLoanProduct product = DefaultLoanProduct.valueOf(loanProductName);
Long loanProductId = loanProductResolver.resolve(product);
log.info("loanProductId: {}", loanProductId);
log.debug("loanProductId: {}", loanProductId);
Map<String, Integer> repaymentStartDateTypeMap = Map.of("DISBURSEMENT_DATE", 1, "SUBMITTED_ON_DATE", 2);