/* * Copyright (c) 2005-2011 Grameen Foundation USA * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. * * See also http://www.apache.org/licenses/LICENSE-2.0.html for an * explanation of the license and how it is applied. */ package org.mifos.test.acceptance.loan; import org.joda.time.DateTime; import org.mifos.test.acceptance.framework.MifosPage; import org.mifos.test.acceptance.framework.UiTestCaseBase; import org.mifos.test.acceptance.framework.loan.CreateLoanAccountSearchParameters; import org.mifos.test.acceptance.framework.loan.CreateLoanAccountSubmitParameters; import org.mifos.test.acceptance.framework.loan.DisburseLoanParameters; import org.mifos.test.acceptance.framework.loan.EditLoanAccountStatusParameters; import org.mifos.test.acceptance.framework.loan.PaymentParameters; import org.mifos.test.acceptance.framework.loan.PerformanceHistoryAtributes; import org.mifos.test.acceptance.framework.testhelpers.LoanTestHelper; import org.mifos.test.acceptance.remote.DateTimeUpdaterRemoteTestingService; import org.springframework.test.context.ContextConfiguration; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.util.HashMap; import java.util.Map; import java.util.Set; @ContextConfiguration(locations = {"classpath:ui-test-context.xml"}) @Test(singleThreaded = true, groups = {"loan", "acceptance", "ui", "no_db_unit"}) public class LoanAccountPerformanceHistoryTest extends UiTestCaseBase { private LoanTestHelper loanTestHelper; @Override @SuppressWarnings("PMD.SignatureDeclareThrowsException") // one of the dependent methods throws Exception @BeforeMethod public void setUp() throws Exception { super.setUp(); //appLauncher = new AppLauncher(selenium); DateTimeUpdaterRemoteTestingService dateTimeUpdaterRemoteTestingService = new DateTimeUpdaterRemoteTestingService(selenium); DateTime targetTime = new DateTime(2011, 03, 04, 1, 0, 0, 0); dateTimeUpdaterRemoteTestingService.setDateTime(targetTime); loanTestHelper = new LoanTestHelper(selenium); } @AfterMethod public void logOut() { (new MifosPage(selenium)).logout(); } // http://mifosforge.jira.com/browse/MIFOSTEST-359 @Test(enabled=true) @SuppressWarnings("PMD.SignatureDeclareThrowsException") // one of the dependent methods throws Exception public void repayMultipleLoansAndVerifyPerformanceHistory() throws Exception { //Given CreateLoanAccountSearchParameters searchParameters = new CreateLoanAccountSearchParameters(); CreateLoanAccountSubmitParameters submitAccountParameters = new CreateLoanAccountSubmitParameters(); searchParameters.setLoanProduct("WeeklyClientFlatLoanWithNoFee"); searchParameters.setSearchString("WeeklyOld Monday"); submitAccountParameters.setInterestRate("24.0"); submitAccountParameters.setNumberOfInstallments("10"); submitAccountParameters.setLoanPurpose("0008-Animal Trading"); DisburseLoanParameters disburseParameters = new DisburseLoanParameters(); disburseParameters.setDisbursalDateDD("04"); disburseParameters.setDisbursalDateMM("03"); disburseParameters.setDisbursalDateYYYY("2011"); disburseParameters.setPaymentType(PaymentParameters.CASH); PerformanceHistoryAtributes performanceHistoryAtributes = new PerformanceHistoryAtributes(); performanceHistoryAtributes.setDelinquentPortfolio(0.0); //When Map<String,String> loanIds = new HashMap<String,String>(); submitAccountParameters.setAmount("2000.0"); loanIds.put(submitAccountParameters.getAmount(), loanTestHelper.createLoanAccount(searchParameters, submitAccountParameters).getAccountId()); performanceHistoryAtributes.incrementLoanCycle(); performanceHistoryAtributes.incrementLoanCycleForProduct(searchParameters.getLoanProduct()); submitAccountParameters.setAmount("3000.0"); loanIds.put(submitAccountParameters.getAmount(), loanTestHelper.createLoanAccount(searchParameters, submitAccountParameters).getAccountId()); performanceHistoryAtributes.incrementLoanCycle(); performanceHistoryAtributes.incrementLoanCycleForProduct(searchParameters.getLoanProduct()); submitAccountParameters.setAmount("5000.0"); searchParameters.setLoanProduct("AnotherWeeklyClientFlatLoanWithNoFee"); loanIds.put(submitAccountParameters.getAmount(), loanTestHelper.createLoanAccount(searchParameters, submitAccountParameters).getAccountId()); performanceHistoryAtributes.incrementLoanCycle(); performanceHistoryAtributes.incrementLoanCycleForProduct(searchParameters.getLoanProduct()); EditLoanAccountStatusParameters params = new EditLoanAccountStatusParameters(); params.setStatus(EditLoanAccountStatusParameters.APPROVED); params.setNote("Approved."); Set<String>amounts = loanIds.keySet(); for (String accountid : loanIds.values()) { loanTestHelper.changeLoanAccountStatus(accountid, params); loanTestHelper.disburseLoan(accountid, disburseParameters); performanceHistoryAtributes.incrementNoOfActiveLoan(); } //Then for (String amount : amounts) { loanTestHelper.repayLoan(loanIds.get(amount)); String lastLoan = amount.substring(0, amount.length() - 2); lastLoan = lastLoan.substring(0, 1) + "," + lastLoan.substring(1); performanceHistoryAtributes.setAmountOfLastLoan(lastLoan); performanceHistoryAtributes.decrementNoOfActiveLoan(); loanTestHelper.verifyPerformenceHistory(searchParameters.getSearchString(), performanceHistoryAtributes); } } }