From 1d86a8f0cb5e2f050bee763df822fff4bd02321c Mon Sep 17 00:00:00 2001 From: Janos Haber Date: Fri, 21 Apr 2023 15:38:47 +0200 Subject: [PATCH] FINERACT-1724 - Remove Restriction from faurd mark --- ...WritePlatformServiceJpaRepositoryImpl.java | 5 -- .../LoanAccountFraudTest.java | 85 ++++++++++--------- 2 files changed, 47 insertions(+), 43 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java index b5e6145eb..fa0cee287 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java @@ -2521,11 +2521,6 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf Loan loan = this.loanAssembler.assembleFrom(loanId); final Map changes = new LinkedHashMap<>(); - if (!loan.isOpen()) { - throw new GeneralPlatformDomainRuleException("error.msg.loan.mark.as.fraud.not.allowed", - "Loan Id: " + loanId + " mark as fraud is not allowed as loan status is not active", loan.getStatus().getCode()); - } - final boolean fraud = command.booleanPrimitiveValueOfParameterNamed(LoanApiConstants.FRAUD_ATTRIBUTE_NAME); if (loan.isFraud() != fraud) { loan.markAsFraud(fraud); diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountFraudTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountFraudTest.java index d4e2e0b8a..5ddb0972e 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountFraudTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountFraudTest.java @@ -32,7 +32,10 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.client.models.GetLoanProductsProductIdResponse; import org.apache.fineract.client.models.GetLoansLoanIdResponse; import org.apache.fineract.client.models.PutLoansLoanIdResponse; +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.Utils; import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder; import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder; @@ -69,54 +72,60 @@ public class LoanAccountFraudTest { @Test public void testMarkLoanAsFraud() { - final String command = "markAsFraud"; - // Client and Loan account creation - final Integer loanId = createAccounts(15, 1); + try { + GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec, responseSpec, Boolean.TRUE); + BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.BUSINESS_DATE, todaysDate); + final String command = "markAsFraud"; + // Client and Loan account creation + final Integer loanId = createAccounts(15, 1); - GetLoansLoanIdResponse getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId); - assertNotNull(getLoansLoanIdResponse); + GetLoansLoanIdResponse getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId); + assertNotNull(getLoansLoanIdResponse); - // Default values Not Null and False - assertNotNull(getLoansLoanIdResponse.getFraud()); - assertEquals(Boolean.FALSE, getLoansLoanIdResponse.getFraud()); + // Default values Not Null and False + assertNotNull(getLoansLoanIdResponse.getFraud()); + assertEquals(Boolean.FALSE, getLoansLoanIdResponse.getFraud()); - String payload = loanTransactionHelper.getLoanFraudPayloadAsJSON("fraud", "true"); - // Send the request expecting an error because the Loan is not active yet - PutLoansLoanIdResponse putLoansLoanIdResponse = loanTransactionHelper.modifyLoanCommand(loanId, command, payload, - this.responseSpecError); + String payload = loanTransactionHelper.getLoanFraudPayloadAsJSON("fraud", "true"); + // Send the request, not expecting any errors (because only open loan restriction removed) + PutLoansLoanIdResponse putLoansLoanIdResponse = loanTransactionHelper.modifyLoanCommand(loanId, command, payload, + this.responseSpec); - String statusCode = getLoansLoanIdResponse.getStatus().getCode(); - log.info("Loan with Id {} is with Status {}", getLoansLoanIdResponse.getId(), statusCode); + String statusCode = getLoansLoanIdResponse.getStatus().getCode(); + log.info("Loan with Id {} is with Status {}", getLoansLoanIdResponse.getId(), statusCode); - // Approve the Loan active - approveAndDisburseLoan(loanId, this.operationDate, this.amountVal); + // Approve the Loan active + approveAndDisburseLoan(loanId, this.operationDate, this.amountVal); - // Default values Not Null and False - getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId); - assertNotNull(getLoansLoanIdResponse); - assertNotNull(getLoansLoanIdResponse.getFraud()); - assertEquals(Boolean.FALSE, getLoansLoanIdResponse.getFraud()); - statusCode = getLoansLoanIdResponse.getStatus().getCode(); - log.info("Loan with Id {} is with Status {}", getLoansLoanIdResponse.getId(), statusCode); + // Default values Not Null and False + getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId); + assertNotNull(getLoansLoanIdResponse); + assertNotNull(getLoansLoanIdResponse.getFraud()); + assertEquals(Boolean.TRUE, getLoansLoanIdResponse.getFraud()); + statusCode = getLoansLoanIdResponse.getStatus().getCode(); + log.info("Loan with Id {} is with Status {}", getLoansLoanIdResponse.getId(), statusCode); - // Mark On the Fraud - putLoansLoanIdResponse = loanTransactionHelper.modifyLoanCommand(loanId, command, payload, this.responseSpec); - assertNotNull(putLoansLoanIdResponse); + // Mark On the Fraud + putLoansLoanIdResponse = loanTransactionHelper.modifyLoanCommand(loanId, command, payload, this.responseSpec); + assertNotNull(putLoansLoanIdResponse); - getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId); - assertNotNull(getLoansLoanIdResponse); - assertNotNull(getLoansLoanIdResponse.getFraud()); - assertEquals(Boolean.TRUE, getLoansLoanIdResponse.getFraud()); + getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId); + assertNotNull(getLoansLoanIdResponse); + assertNotNull(getLoansLoanIdResponse.getFraud()); + assertEquals(Boolean.TRUE, getLoansLoanIdResponse.getFraud()); - // Mark Off the Fraud - payload = loanTransactionHelper.getLoanFraudPayloadAsJSON("fraud", "false"); - putLoansLoanIdResponse = loanTransactionHelper.modifyLoanCommand(loanId, command, payload, this.responseSpec); - assertNotNull(putLoansLoanIdResponse); + // Mark Off the Fraud + payload = loanTransactionHelper.getLoanFraudPayloadAsJSON("fraud", "false"); + putLoansLoanIdResponse = loanTransactionHelper.modifyLoanCommand(loanId, command, payload, this.responseSpec); + assertNotNull(putLoansLoanIdResponse); - getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId); - assertNotNull(getLoansLoanIdResponse); - assertNotNull(getLoansLoanIdResponse.getFraud()); - assertEquals(Boolean.FALSE, getLoansLoanIdResponse.getFraud()); + getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId); + assertNotNull(getLoansLoanIdResponse); + assertNotNull(getLoansLoanIdResponse.getFraud()); + assertEquals(Boolean.FALSE, getLoansLoanIdResponse.getFraud()); + } finally { + GlobalConfigurationHelper.updateIsBusinessDateEnabled(requestSpec, responseSpec, Boolean.FALSE); + } } private Integer createAccounts(final Integer daysToSubtract, final Integer numberOfRepayments) {