Raman - Added Group Loan test
This commit is contained in:
committed by
Vishwas Babu A J
parent
4223ad80b5
commit
63610b3c50
+118
@@ -0,0 +1,118 @@
|
|||||||
|
package org.mifosplatform.integrationtests;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.lang.System;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.mifosplatform.integrationtests.common.ClientHelper;
|
||||||
|
import org.mifosplatform.integrationtests.common.GroupHelper;
|
||||||
|
import org.mifosplatform.integrationtests.common.Utils;
|
||||||
|
import org.mifosplatform.integrationtests.common.loans.LoanApplicationTestBuilder;
|
||||||
|
import org.mifosplatform.integrationtests.common.loans.LoanProductTestBuilder;
|
||||||
|
import org.mifosplatform.integrationtests.common.loans.LoanTransactionHelper;
|
||||||
|
|
||||||
|
import com.jayway.restassured.builder.RequestSpecBuilder;
|
||||||
|
import com.jayway.restassured.builder.ResponseSpecBuilder;
|
||||||
|
import com.jayway.restassured.http.ContentType;
|
||||||
|
import com.jayway.restassured.specification.RequestSpecification;
|
||||||
|
import com.jayway.restassured.specification.ResponseSpecification;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Group Loan Integration Test for checking Loan Application Repayment
|
||||||
|
* Schedule.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||||
|
public class GroupLoanIntegrationTest {
|
||||||
|
|
||||||
|
private ResponseSpecification responseSpec;
|
||||||
|
private RequestSpecification requestSpec;
|
||||||
|
private LoanTransactionHelper loanTransactionHelper;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
Utils.initializeRESTAssured();
|
||||||
|
requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
|
||||||
|
requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
|
||||||
|
responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void checkGroupLoanCreateAndDisburseFlow() {
|
||||||
|
loanTransactionHelper = new LoanTransactionHelper(requestSpec, responseSpec);
|
||||||
|
|
||||||
|
Integer clientID = ClientHelper.createClient(requestSpec, responseSpec);
|
||||||
|
Integer groupID = GroupHelper.createGroup(requestSpec, responseSpec,true);
|
||||||
|
groupID = GroupHelper.associateClient(requestSpec, responseSpec, groupID.toString(),clientID.toString());
|
||||||
|
|
||||||
|
Integer loanProductID = createLoanProduct();
|
||||||
|
Integer loanID = applyForLoanApplication(groupID, loanProductID);
|
||||||
|
ArrayList<HashMap> loanSchedule = loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, responseSpec, loanID);
|
||||||
|
verifyLoanRepaymentSchedule(loanSchedule);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private Integer createLoanProduct() {
|
||||||
|
System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
|
||||||
|
String loanProductJSON = new LoanProductTestBuilder() //
|
||||||
|
.withPrincipal("12,000.00") //
|
||||||
|
.withNumberOfRepayments("4") //
|
||||||
|
.withRepaymentAfterEvery("1") //
|
||||||
|
.withRepaymentTypeAsMonth() //
|
||||||
|
.withinterestRatePerPeriod("1") //
|
||||||
|
.withInterestRateFrequencyTypeAsMonths() //
|
||||||
|
.withAmortizationTypeAsEqualInstallments() //
|
||||||
|
.withInterestTypeAsDecliningBalance() //
|
||||||
|
.build();
|
||||||
|
return loanTransactionHelper.getLoanProductId(loanProductJSON);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Integer applyForLoanApplication(final Integer groupID, final Integer loanProductID) {
|
||||||
|
System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
|
||||||
|
String loanApplicationJSON = new LoanApplicationTestBuilder() //
|
||||||
|
.withPrincipal("12,000.00") //
|
||||||
|
.withLoanTermFrequency("4") //
|
||||||
|
.withLoanTermFrequencyAsMonths() //
|
||||||
|
.withNumberOfRepayments("4") //
|
||||||
|
.withRepaymentEveryAfter("1") //
|
||||||
|
.withRepaymentFrequencyTypeAsMonths() //
|
||||||
|
.withInterestRatePerPeriod("2") //
|
||||||
|
.withAmortizationTypeAsEqualInstallments() //
|
||||||
|
.withInterestTypeAsDecliningBalance() //
|
||||||
|
.withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
|
||||||
|
.withExpectedDisbursementDate("20 September 2011") //
|
||||||
|
.withSubmittedOnDate("20 September 2011") //
|
||||||
|
.withLoanType("group")
|
||||||
|
.build(groupID.toString(), loanProductID.toString());
|
||||||
|
System.out.println(loanApplicationJSON);
|
||||||
|
return loanTransactionHelper.getLoanId(loanApplicationJSON);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void verifyLoanRepaymentSchedule(final ArrayList<HashMap> loanSchedule) {
|
||||||
|
System.out.println("--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
|
||||||
|
|
||||||
|
assertEquals("Checking for Due Date for 1st Month", new ArrayList<Integer>(Arrays.asList(2011, 10, 20)),
|
||||||
|
loanSchedule.get(1).get("dueDate"));
|
||||||
|
assertEquals("Checking for Principal Due for 1st Month", new Float("2911.49"), loanSchedule.get(1).get("principalOriginalDue"));
|
||||||
|
assertEquals("Checking for Interest Due for 1st Month", new Float("240.00"), loanSchedule.get(1).get("interestOriginalDue"));
|
||||||
|
|
||||||
|
assertEquals("Checking for Due Date for 2nd Month", new ArrayList<Integer>(Arrays.asList(2011, 11, 20)),
|
||||||
|
loanSchedule.get(2).get("dueDate"));
|
||||||
|
assertEquals("Checking for Principal Due for 2nd Month", new Float("2969.71"), loanSchedule.get(2).get("principalDue"));
|
||||||
|
assertEquals("Checking for Interest Due for 2nd Month", new Float("181.77"), loanSchedule.get(2).get("interestOriginalDue"));
|
||||||
|
|
||||||
|
assertEquals("Checking for Due Date for 3rd Month", new ArrayList<Integer>(Arrays.asList(2011, 12, 20)),
|
||||||
|
loanSchedule.get(3).get("dueDate"));
|
||||||
|
assertEquals("Checking for Principal Due for 3rd Month", new Float("3029.1"), loanSchedule.get(3).get("principalDue"));
|
||||||
|
assertEquals("Checking for Interest Due for 3rd Month", new Float("122.38"), loanSchedule.get(3).get("interestOriginalDue"));
|
||||||
|
|
||||||
|
assertEquals("Checking for Due Date for 4th Month", new ArrayList<Integer>(Arrays.asList(2012, 1, 20)),
|
||||||
|
loanSchedule.get(4).get("dueDate"));
|
||||||
|
assertEquals("Checking for Principal Due for 4th Month", new Float("3089.7"), loanSchedule.get(4).get("principalDue"));
|
||||||
|
assertEquals("Checking for Interest Due for 4th Month", new Float("61.79"), loanSchedule.get(4).get("interestOriginalDue"));
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -60,7 +60,7 @@ public class GroupTest {
|
|||||||
GroupHelper.verifyGroupDetails(requestSpec, responseSpec, groupID,"name",updatedGroupName);
|
GroupHelper.verifyGroupDetails(requestSpec, responseSpec, groupID,"name",updatedGroupName);
|
||||||
|
|
||||||
groupID = GroupHelper.createGroup(requestSpec, responseSpec);
|
groupID = GroupHelper.createGroup(requestSpec, responseSpec);
|
||||||
Integer groupID2 = GroupHelper.deleteGroup(requestSpec, responseSpec, groupID.toString());
|
GroupHelper.deleteGroup(requestSpec, responseSpec, groupID.toString());
|
||||||
GroupHelper.verifyGroupDeleted(requestSpec, responseSpec, groupID);
|
GroupHelper.verifyGroupDeleted(requestSpec, responseSpec, groupID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
-2
@@ -33,12 +33,15 @@ public class LoanApplicationTestBuilder {
|
|||||||
private String submittedOnDate = "";
|
private String submittedOnDate = "";
|
||||||
private String loanType = "individual";
|
private String loanType = "individual";
|
||||||
|
|
||||||
public String build(final String clientID, final String loanProductId) {
|
public String build(final String ID, final String loanProductId) {
|
||||||
|
|
||||||
HashMap<String, String> map = new HashMap<String, String>();
|
HashMap<String, String> map = new HashMap<String, String>();
|
||||||
map.put("dateFormat", "dd MMMM yyyy");
|
map.put("dateFormat", "dd MMMM yyyy");
|
||||||
map.put("locale", "en_GB");
|
map.put("locale", "en_GB");
|
||||||
map.put("clientId", clientID);
|
if (loanType == "group")
|
||||||
|
map.put("groupId", ID);
|
||||||
|
else
|
||||||
|
map.put("clientId", ID);
|
||||||
map.put("productId", loanProductId);
|
map.put("productId", loanProductId);
|
||||||
map.put("principal", principal);
|
map.put("principal", principal);
|
||||||
map.put("loanTermFrequency", loanTermFrequency);
|
map.put("loanTermFrequency", loanTermFrequency);
|
||||||
|
|||||||
Reference in New Issue
Block a user