/* * 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.framework.loanproduct; import java.math.BigDecimal; import org.mifos.test.acceptance.framework.MifosPage; import org.testng.Assert; import com.thoughtworks.selenium.Selenium; public class LoanProductDetailsPage extends MifosPage { public final static String lOAN_AMOUNT_SAME_TABLE = "loanAmountSameTable"; public final static String LOAN_AMOUNT_FROM_CYCLE_TABLE = "loanAmountFromCycleTable"; public final static String LOAN_AMOUNT_FROM_LAST_AMOUNT_TABLE = "loanAmountFromLastTable"; public final static String INSTALLMENTS_SAME_TABLE = "noOfInstallSameTable"; public final static String INSTALLMENTS_FROM_CYCLE_TABLE = "noOfInstallFromCycleTable"; public final static String INSTALLMENTS_FROM_LAST_AMOUNT_TABLE = "noOfInstallFromLastTable"; public LoanProductDetailsPage(Selenium selenium) { super(selenium); } public LoanProductDetailsPage verifyPage() { verifyPage("LoanProductDetails"); return this; } public EditLoanProductPage editLoanProduct() { selenium.click("loanproductdetails.link.editLoanProduct"); waitForPageToLoad(); return new EditLoanProductPage(selenium); } public void verifyInterestAmount(String amount) { Assert.assertTrue(selenium.isTextPresent(amount)); } public void verifyDefaultLoanAmount(String amount) { Assert.assertTrue(selenium.isTextPresent(amount)); } public void verifyVariableInstalmentOption(String maxGap, String minGap, String minInstalmentAmount) { Assert.assertTrue(selenium.isTextPresent("Minimum gap between installments: " + minGap + " days")); if ("".equals(maxGap)) { Assert.assertTrue(selenium.isTextPresent("Maximum gap between installments: N/A")); } else { Assert.assertTrue(selenium.isTextPresent("Maximum gap between installments: " + maxGap + " days")); } if ("".equals(minInstalmentAmount)) { Assert.assertTrue(selenium.isTextPresent("Minimum installment amount: N/A")) ; } else { Assert.assertTrue(selenium.isTextPresent("Minimum installment amount: " + minInstalmentAmount)) ; } Assert.assertTrue(selenium.isTextPresent("Can configure variable installments: Yes")); } public void verifyVariableInstalmentOptionUnChecked() { Assert.assertTrue(!selenium.isTextPresent("Minimum gap between installments:")); Assert.assertTrue(!selenium.isTextPresent("Maximum gap between installments:")); Assert.assertTrue(!selenium.isTextPresent("Minimum installment amount:")) ; Assert.assertTrue(selenium.isTextPresent("Can configure variable installments: No")); } public LoanProductDetailsPage verifyCashFlowOfEditedLoan(String warningThreshold, String indebetedValue, String repaymentCapacityValue) { Assert.assertTrue(selenium.isTextPresent("Compare with Cash Flow: Yes")); if ("".equals(warningThreshold)) { Assert.assertTrue(selenium.isTextPresent("Warning Threshold: N/A")); } else { Assert.assertTrue(selenium.isTextPresent("Warning Threshold: " + warningThreshold + " %")); } if ("".equals(indebetedValue)) { Assert.assertTrue(selenium.isTextPresent("Indebtedness Rate: N/A")); } else { Assert.assertTrue(selenium.isTextPresent("Indebtedness Rate: " + indebetedValue + " %")); } if ("".equals(repaymentCapacityValue)) { Assert.assertTrue(selenium.isTextPresent("Repayment Capacity: N/A")); } else { Assert.assertTrue(selenium.isTextPresent("Repayment Capacity: " + repaymentCapacityValue + " %")); } return this; } public LoanProductDetailsPage verifyCashFlowUncheckedInEditedProduct() { Assert.assertTrue(selenium.isTextPresent("Compare with Cash Flow: No")); Assert.assertTrue(!selenium.isTextPresent("Warning Threshold:")); return this; } public void verifyLoanAmountTableTypeSame(String min, String max, String def) { BigDecimal minAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(lOAN_AMOUNT_SAME_TABLE+".1.0").replaceAll(",", ""))); BigDecimal maxAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(lOAN_AMOUNT_SAME_TABLE+".1.1").replaceAll(",", ""))); BigDecimal defaultAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(lOAN_AMOUNT_SAME_TABLE+".1.2").replaceAll(",", ""))); BigDecimal expectedMinAmount = BigDecimal.valueOf(Double.valueOf(min.replaceAll(",", ""))); BigDecimal expectedMaxAmount = BigDecimal.valueOf(Double.valueOf(max.replaceAll(",", ""))); BigDecimal expectedDefaultAmount = BigDecimal.valueOf(Double.valueOf(def.replaceAll(",", ""))); Assert.assertEquals(minAmount, expectedMinAmount); Assert.assertEquals(maxAmount, expectedMaxAmount); Assert.assertEquals(defaultAmount, expectedDefaultAmount); // Assert.assertEquals(selenium.getTable(lOAN_AMOUNT_SAME_TABLE+".1.0"), min); // Assert.assertEquals(selenium.getTable(lOAN_AMOUNT_SAME_TABLE+".1.1"), max); // Assert.assertEquals(selenium.getTable(lOAN_AMOUNT_SAME_TABLE+".1.2"), def); } public void verifyInstallmentsTableTypeFromCycle(String[][] installCycles) { for(int i = 1; i <= installCycles.length; i++) { Assert.assertEquals(selenium.getTable(INSTALLMENTS_FROM_CYCLE_TABLE+"."+i+".1"), installCycles[i-1][0]); Assert.assertEquals(selenium.getTable(INSTALLMENTS_FROM_CYCLE_TABLE+"."+i+".2"), installCycles[i-1][1]); Assert.assertEquals(selenium.getTable(INSTALLMENTS_FROM_CYCLE_TABLE+"."+i+".3"), installCycles[i-1][2]); } } public void verifyLoanAmountTableTypeFromCycle(String[][] loanAmountCycles) { for(int i = 1; i <= loanAmountCycles.length; i++) { BigDecimal minAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(LOAN_AMOUNT_FROM_CYCLE_TABLE+"."+i+".1").replaceAll(",", ""))); BigDecimal maxAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(LOAN_AMOUNT_FROM_CYCLE_TABLE+"."+i+".2").replaceAll(",", ""))); BigDecimal defaultAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(LOAN_AMOUNT_FROM_CYCLE_TABLE+"."+i+".3").replaceAll(",", ""))); BigDecimal expectedMinAmount = BigDecimal.valueOf(Double.valueOf(loanAmountCycles[i-1][0])); BigDecimal expectedMaxAmount = BigDecimal.valueOf(Double.valueOf(loanAmountCycles[i-1][1])); BigDecimal expectedDefaultAmount = BigDecimal.valueOf(Double.valueOf(loanAmountCycles[i-1][2])); Assert.assertEquals(minAmount, expectedMinAmount); Assert.assertEquals(maxAmount, expectedMaxAmount); Assert.assertEquals(defaultAmount, expectedDefaultAmount); } } public void verifyInstallmentTableTypeFromLastAmount(String[][] installmentsByLastAmount) { StringBuffer last = new StringBuffer(""); for(int i = 1; i <= installmentsByLastAmount.length; i++) { last.delete(0, last.length()); if(i > 1) { int tmp = Integer.valueOf(installmentsByLastAmount[i-2][0]); tmp += 1; String newLast = String.valueOf(tmp); last.append(newLast).append(".0 - ").append(installmentsByLastAmount[i-1][0]).append(".0"); } else { last.append("0.0 - ").append(installmentsByLastAmount[0][0]).append(".0"); } // Assert.assertEquals(selenium.getTable(INSTALLMENTS_FROM_LAST_AMOUNT_TABLE+"."+i+".0"), last.toString()); BigDecimal minAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(INSTALLMENTS_FROM_LAST_AMOUNT_TABLE+"."+i+".1").replaceAll(",", ""))); BigDecimal maxAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(INSTALLMENTS_FROM_LAST_AMOUNT_TABLE+"."+i+".2").replaceAll(",", ""))); BigDecimal defaultAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(INSTALLMENTS_FROM_LAST_AMOUNT_TABLE+"."+i+".3").replaceAll(",", ""))); BigDecimal expectedMinAmount = BigDecimal.valueOf(Double.valueOf(installmentsByLastAmount[i-1][1])); BigDecimal expectedMaxAmount = BigDecimal.valueOf(Double.valueOf(installmentsByLastAmount[i-1][2])); BigDecimal expectedDefaultAmount = BigDecimal.valueOf(Double.valueOf(installmentsByLastAmount[i-1][3])); Assert.assertEquals(minAmount, expectedMinAmount); Assert.assertEquals(maxAmount, expectedMaxAmount); Assert.assertEquals(defaultAmount, expectedDefaultAmount); // Assert.assertEquals(selenium.getTable(INSTALLMENTS_FROM_LAST_AMOUNT_TABLE+"."+i+".1"), installmentsByLastAmount[i-1][1]); // Assert.assertEquals(selenium.getTable(INSTALLMENTS_FROM_LAST_AMOUNT_TABLE+"."+i+".2"), installmentsByLastAmount[i-1][2]); // Assert.assertEquals(selenium.getTable(INSTALLMENTS_FROM_LAST_AMOUNT_TABLE+"."+i+".3"), installmentsByLastAmount[i-1][3]); } } public void verifyAmountTableTypeFromLastAmount(String[][] amountsByLastAmount) { StringBuffer last = new StringBuffer(""); for(int i = 1; i <= amountsByLastAmount.length; i++) { last.delete(0, last.length()); if(i > 1) { int tmp = Integer.valueOf(amountsByLastAmount[i-2][0]); tmp += 1; String newLast = String.valueOf(tmp); last.append(newLast).append(".0 - ").append(amountsByLastAmount[i-1][0]).append(".0"); } else { last.append("0.0 - ").append(amountsByLastAmount[0][0]).append(".0"); } BigDecimal minAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(LOAN_AMOUNT_FROM_LAST_AMOUNT_TABLE+"."+i+".1").replaceAll(",", ""))); BigDecimal maxAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(LOAN_AMOUNT_FROM_LAST_AMOUNT_TABLE+"."+i+".2").replaceAll(",", ""))); BigDecimal defaultAmount = BigDecimal.valueOf(Double.valueOf(selenium.getTable(LOAN_AMOUNT_FROM_LAST_AMOUNT_TABLE+"."+i+".3").replaceAll(",", ""))); BigDecimal expectedMinAmount = BigDecimal.valueOf(Double.valueOf(amountsByLastAmount[i-1][1])); BigDecimal expectedMaxAmount = BigDecimal.valueOf(Double.valueOf(amountsByLastAmount[i-1][2])); BigDecimal expectedDefaultAmount = BigDecimal.valueOf(Double.valueOf(amountsByLastAmount[i-1][3])); Assert.assertEquals(minAmount, expectedMinAmount); Assert.assertEquals(maxAmount, expectedMaxAmount); Assert.assertEquals(defaultAmount, expectedDefaultAmount); // Assert.assertEquals(selenium.getTable(LOAN_AMOUNT_FROM_LAST_AMOUNT_TABLE+"."+i+".0"), last.toString()); // Assert.assertEquals(selenium.getTable(LOAN_AMOUNT_FROM_LAST_AMOUNT_TABLE+"."+i+".1"), amountsByLastAmount[i-1][1]); // Assert.assertEquals(selenium.getTable(LOAN_AMOUNT_FROM_LAST_AMOUNT_TABLE+"."+i+".2"), amountsByLastAmount[i-1][2]); // Assert.assertEquals(selenium.getTable(LOAN_AMOUNT_FROM_LAST_AMOUNT_TABLE+"."+i+".3"), amountsByLastAmount[i-1][3]); } } public void verifyInstallments(String min, String max, String def) { Assert.assertEquals(selenium.getTable(INSTALLMENTS_SAME_TABLE+".1.0"), min); Assert.assertEquals(selenium.getTable(INSTALLMENTS_SAME_TABLE+".1.1"), max); Assert.assertEquals(selenium.getTable(INSTALLMENTS_SAME_TABLE+".1.2"), def); } }