This is an automated email from the ASF dual-hosted git repository.

vishwasbabu pushed a commit to branch 
revert-529-revert-526-create-and-approve-loan-on-batch-mode
in repository https://gitbox.apache.org/repos/asf/fineract.git

commit b75a980a948a79148532a692cb53d47ff3e8dcef
Author: Vishwas Babu A J <[email protected]>
AuthorDate: Wed Mar 6 20:01:39 2019 -0800

    Revert "Revert "FINERACT-684: Create and approve loan on batch mode ""
---
 .../fineract/integrationtests/BatchApiTest.java    | 48 ++++++++++++++++++++++
 .../integrationtests/common/BatchHelper.java       | 24 +++++++++++
 .../portfolio/loanaccount/domain/Loan.java         | 22 ++++++----
 .../loanaccount/service/LoanAssembler.java         |  3 +-
 4 files changed, 88 insertions(+), 9 deletions(-)

diff --git 
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
 
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
index 25a4644..aae79a0 100644
--- 
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
+++ 
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
@@ -19,6 +19,7 @@
 package org.apache.fineract.integrationtests;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.apache.fineract.batch.domain.BatchRequest;
@@ -422,4 +423,51 @@ public class BatchApiTest {
         Assert.assertEquals("Verify Status Code 200 for Approve Loan", 200L, 
(long) response.get(3).getStatusCode());
         Assert.assertEquals("Verify Status Code 200 for Disburse Loan", 200L, 
(long) response.get(4).getStatusCode());
     }
+
+    /**
+     * Test for the successful create client, apply loan,approval and 
disbursal of a loan using
+     * Batch API with enclosingTransaction. A '200' status code is expected on 
successful activation.
+     *
+     * @see 
org.apache.fineract.batch.command.internal.ApproveLoanCommandStrategy
+     * @see 
org.apache.fineract.batch.command.internal.DisburseLoanCommandStrategy
+     */
+    @Test
+    public void 
shouldReturnOkStatusOnSuccessfulLoanApprovalAndDisburseWithTransaction(){
+        final String loanProductJSON = new LoanProductTestBuilder() //
+                .withPrincipal("10000000.00") //
+                .withNumberOfRepayments("24") //
+                .withRepaymentAfterEvery("1") //
+                .withRepaymentTypeAsMonth() //
+                .withinterestRatePerPeriod("2") //
+                .withInterestRateFrequencyTypeAsMonths() //
+                .withAmortizationTypeAsEqualPrincipalPayment() //
+                .withInterestTypeAsDecliningBalance() //
+                .currencyDetails("0", "100").build(null);
+
+        final Integer productId = new LoanTransactionHelper(this.requestSpec, 
this.responseSpec).getLoanProductId(loanProductJSON);
+
+        // Create a createClient Request
+        final BatchRequest br1 = BatchHelper.createActiveClientRequest(4740L, 
"");
+
+        // Create a ApplyLoan Request
+        final BatchRequest br2 = BatchHelper.applyLoanRequest(4742L, 4740L, 
productId);
+
+        // Create a approveLoan Request
+        final BatchRequest br3 = BatchHelper.approveLoanRequest(4743L, 4742L);
+
+        // Create a disburseLoan Request
+        final BatchRequest br4 = BatchHelper.disburseLoanRequest(4744L, 4743L);
+
+        final List<BatchRequest> batchRequests = 
Arrays.asList(br1,br2,br3,br4);
+
+        final String jsonifiedRequest = 
BatchHelper.toJsonString(batchRequests);
+
+        final List<BatchResponse> response = 
BatchHelper.postBatchRequestsWithEnclosingTransaction(this.requestSpec, 
this.responseSpec,
+                jsonifiedRequest);
+
+        Assert.assertEquals("Verify Status Code 200 for create client", 200L, 
(long) response.get(0).getStatusCode());
+        Assert.assertEquals("Verify Status Code 200 for apply Loan", 200L, 
(long) response.get(1).getStatusCode());
+        Assert.assertEquals("Verify Status Code 200 for approve Loan", 200L, 
(long) response.get(2).getStatusCode());
+        Assert.assertEquals("Verify Status Code 200 for disburse Loan", 200L, 
(long) response.get(3).getStatusCode());
+    }
 }
\ No newline at end of file
diff --git 
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
 
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
index 96cf0d0..5e05c91 100644
--- 
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
+++ 
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
@@ -157,6 +157,30 @@ public class BatchHelper {
 
     /**
      * Creates and returns a
+     * {@link 
org.apache.fineract.batch.command.internal.CreateClientCommandStrategy}
+     * Request as one of the request in Batch.
+     *
+     * @param reqId
+     * @param externalId
+     * @return BatchRequest
+     */
+    public static BatchRequest createActiveClientRequest(final Long requestId, 
final String externalId) {
+
+        final BatchRequest br = new BatchRequest();
+        br.setRequestId(requestId);
+        br.setRelativeUrl("clients");
+        br.setMethod("POST");
+
+        final String body = "{ \"officeId\": 1, \"firstname\": \"Petra\", 
\"lastname\": \"Yton\"," + "\"externalId\": " + externalId
+                + ",  \"dateFormat\": \"dd MMMM yyyy\", \"locale\": \"en\"," + 
"\"active\": true, \"activationDate\": \"04 March 2010\", \"submittedOnDate\": 
\"04 March 2010\"}";
+
+        br.setBody(body);
+
+        return br;
+    }
+
+    /**
+     * Creates and returns a
      * {@link 
org.apache.fineract.batch.command.internal.UpdateClientCommandStrategy}
      * Request with given requestId and reference.
      * 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index 193810d..4f4b264 100755
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -6497,14 +6497,20 @@ public class Loan extends 
AbstractPersistableCustom<Long> {
         return this.charges;
     }
     public void initializeLazyCollections() {
-        this.charges.size() ;
-        this.trancheCharges.size() ;
-        this.repaymentScheduleInstallments.size() ;
-        this.loanTransactions.size() ;
-        this.disbursementDetails.size() ;
-        this.loanTermVariations.size() ;
-        this.collateral.size() ;
-        this.loanOfficerHistory.size() ;
+        checkAndFetchLazyCollection(this.charges);
+        checkAndFetchLazyCollection(this.trancheCharges);
+        checkAndFetchLazyCollection(this.repaymentScheduleInstallments);
+        checkAndFetchLazyCollection(this.loanTransactions);
+        checkAndFetchLazyCollection(this.disbursementDetails);
+        checkAndFetchLazyCollection(this.loanTermVariations);
+        checkAndFetchLazyCollection(this.collateral);
+        checkAndFetchLazyCollection(this.loanOfficerHistory);
+    }
+
+    private void checkAndFetchLazyCollection(Collection lazyCollection){
+        if (lazyCollection != null) {
+            lazyCollection.size();
+        }
     }
     
     public void initializeLoanOfficerHistory() {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
index 2d124bf..95fc3c0 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
@@ -19,6 +19,7 @@
 package org.apache.fineract.portfolio.loanaccount.service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
@@ -181,7 +182,7 @@ public class LoanAssembler {
         if (loanPurposeId != null) {
             loanPurpose = 
this.codeValueRepository.findOneWithNotFoundDetection(loanPurposeId);
         }
-        List<LoanDisbursementDetails> disbursementDetails = null;
+        List<LoanDisbursementDetails> disbursementDetails = new ArrayList<>();
         BigDecimal fixedEmiAmount = null;
         if (loanProduct.isMultiDisburseLoan() || 
loanProduct.canDefineInstallmentAmount()) {
             fixedEmiAmount = 
this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed(LoanApiConstants.emiAmountParameterName,
 element);

Reply via email to