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 2023/04/22 21:26:51 UTC

[fineract] branch develop updated: FINERACT-1724 - Remove Restriction from faurd mark

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 1d86a8f0c FINERACT-1724 - Remove Restriction from faurd mark
1d86a8f0c is described below

commit 1d86a8f0cb5e2f050bee763df822fff4bd02321c
Author: Janos Haber <ja...@finesolution.hu>
AuthorDate: Fri Apr 21 15:38:47 2023 +0200

    FINERACT-1724 - Remove Restriction from faurd mark
---
 .../LoanWritePlatformServiceJpaRepositoryImpl.java |   5 -
 .../integrationtests/LoanAccountFraudTest.java     | 105 +++++++++++----------
 2 files changed, 57 insertions(+), 53 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<String, Object> 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);
-
-        GetLoansLoanIdResponse getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId);
-        assertNotNull(getLoansLoanIdResponse);
-
-        // 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 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);
-
-        // 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);
-
-        // 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());
-
-        // 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());
+        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);
+
+            // Default values Not Null and False
+            assertNotNull(getLoansLoanIdResponse.getFraud());
+            assertEquals(Boolean.FALSE, getLoansLoanIdResponse.getFraud());
+
+            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);
+
+            // 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.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);
+
+            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);
+
+            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) {