You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ad...@apache.org on 2022/11/17 21:32:37 UTC
[fineract] branch develop updated: Fix chargeback transaction amount zero
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 4e3e078d7 Fix chargeback transaction amount zero
4e3e078d7 is described below
commit 4e3e078d7fcb15d2829a379c6ab14b419bd79b6b
Author: Jose Alberto Hernandez <al...@MacBook-Pro.local>
AuthorDate: Thu Nov 17 07:48:07 2022 -0600
Fix chargeback transaction amount zero
---
.../serialization/LoanEventApiJsonValidator.java | 2 +-
.../LoanTransactionChargebackTest.java | 36 +++++++++++++++++++---
2 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanEventApiJsonValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanEventApiJsonValidator.java
index 0ff3dddde..b6912d556 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanEventApiJsonValidator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanEventApiJsonValidator.java
@@ -237,7 +237,7 @@ public final class LoanEventApiJsonValidator {
final BigDecimal transactionAmount = this.fromApiJsonHelper
.extractBigDecimalWithLocaleNamed(LoanApiConstants.TRANSACTION_AMOUNT_PARAMNAME, element);
baseDataValidator.reset().parameter(LoanApiConstants.TRANSACTION_AMOUNT_PARAMNAME).value(transactionAmount).notNull()
- .zeroOrPositiveAmount();
+ .positiveAmount();
final String note = this.fromApiJsonHelper.extractStringNamed(LoanApiConstants.noteParameterName, element);
baseDataValidator.reset().parameter(LoanApiConstants.noteParameterName).value(note).notExceedingLengthOf(1000);
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionChargebackTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionChargebackTest.java
index 41bdb0374..dff586068 100644
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionChargebackTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionChargebackTest.java
@@ -53,7 +53,8 @@ import org.junit.jupiter.api.Test;
public class LoanTransactionChargebackTest {
private ResponseSpecification responseSpec;
- private ResponseSpecification responseSpecError;
+ private ResponseSpecification responseSpecErr400;
+ private ResponseSpecification responseSpecErr503;
private RequestSpecification requestSpec;
private LoanTransactionHelper loanTransactionHelper;
private final String amountVal = "1000";
@@ -66,7 +67,8 @@ public class LoanTransactionChargebackTest {
this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
- this.responseSpecError = new ResponseSpecBuilder().expectStatusCode(503).build();
+ this.responseSpecErr400 = new ResponseSpecBuilder().expectStatusCode(400).build();
+ this.responseSpecErr503 = new ResponseSpecBuilder().expectStatusCode(503).build();
this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
this.todaysDate = Utils.getLocalDateOfTenant();
@@ -109,11 +111,35 @@ public class LoanTransactionChargebackTest {
// Try to reverse a Loan Transaction charge back
PostLoansLoanIdTransactionsResponse reverseTransactionResponse = loanTransactionHelper.reverseLoanTransaction(loanId,
- chargebackTransactionId.intValue(), operationDate, responseSpecError);
+ chargebackTransactionId.intValue(), operationDate, responseSpecErr503);
// Try to reverse a Loan Transaction repayment with linked transactions
reverseTransactionResponse = loanTransactionHelper.reverseLoanTransaction(loanId, transactionId.intValue(), operationDate,
- responseSpecError);
+ responseSpecErr503);
+ }
+
+ @Test
+ public void applyLoanTransactionChargebackWithAmountZero() {
+ // Client and Loan account creation
+ final Integer loanId = createAccounts(15, 1);
+
+ GetLoansLoanIdResponse getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId);
+ assertNotNull(getLoansLoanIdResponse);
+
+ loanTransactionHelper.printRepaymentSchedule(getLoansLoanIdResponse);
+
+ Float amount = Float.valueOf(amountVal);
+ PostLoansLoanIdTransactionsResponse loanIdTransactionsResponse = loanTransactionHelper.makeLoanRepayment(operationDate, amount,
+ loanId);
+ assertNotNull(loanIdTransactionsResponse);
+ final Long transactionId = loanIdTransactionsResponse.getResourceId();
+
+ getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId);
+ assertNotNull(getLoansLoanIdResponse);
+ loanTransactionHelper.validateLoanStatus(getLoansLoanIdResponse, "loanStatusType.closed.obligations.met");
+
+ loanTransactionHelper.applyChargebackTransaction(loanId, transactionId.intValue(), "0.00", 0, responseSpecErr400);
+
}
@Test
@@ -179,7 +205,7 @@ public class LoanTransactionChargebackTest {
log.info("Try to apply the Charge back over transaction Id {} with type {}", loanTransaction.getId(),
loanTransaction.getType().getCode());
- loanTransactionHelper.applyChargebackTransaction(loanId, loanTransaction.getId().intValue(), amountVal, 0, responseSpecError);
+ loanTransactionHelper.applyChargebackTransaction(loanId, loanTransaction.getId().intValue(), amountVal, 0, responseSpecErr503);
}
@Test