/*
* 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.savings;
import org.mifos.test.acceptance.util.StringUtil;
import org.mifos.test.acceptance.framework.AbstractPage;
import org.mifos.test.acceptance.framework.loan.AccountAddNotesPage;
import org.mifos.test.acceptance.framework.loan.AccountNotesPage;
import org.mifos.test.acceptance.framework.loan.AccountChangeStatusPage;
import org.testng.Assert;
import com.thoughtworks.selenium.Selenium;
import org.mifos.test.acceptance.framework.loan.AttachSurveyPage;
import org.mifos.test.acceptance.framework.questionnaire.ViewQuestionResponseDetailPage;
@SuppressWarnings("PMD.SystemPrintln")
public class SavingsAccountDetailPage extends AbstractPage {
public SavingsAccountDetailPage(Selenium selenium) {
super(selenium);
}
public void verifyPage() {
this.verifyPage("savingsaccountdetail");
}
public String getTotalAmountDue(){
return selenium.getText("savingsaccountdetail.text.totalAmountDue");
}
public String getAccountBallance(){
return selenium.getText("savingsaccountdetail.text.accountBalance");
}
public void verifyTotalAmountDue(String totalAmountDue){
Assert.assertEquals(getTotalAmountDue(), totalAmountDue);
}
public void verifySavingsAmount(String amount) {
Assert.assertTrue(selenium.isTextPresent(StringUtil.formatNumber(amount)));
}
public void verifyDate(String date){
Assert.assertTrue(selenium.isTextPresent(date));
}
public void verifySavingsProduct(String savingsProduct) {
Assert.assertTrue(selenium.isTextPresent(savingsProduct));
}
public void verifyStatus(String status){
Assert.assertEquals(selenium.getText("savingsaccountdetail.status.text"),status);
}
public AccountAddNotesPage navigateToAddNotesPage() {
selenium.click("savingsaccountdetail.link.addANotes");
waitForPageToLoad();
return new AccountAddNotesPage(selenium);
}
public ViewDepositDueDetailsPage navigateToViewDepositDueDetails(){
selenium.click("savingsaccountdetail.link.viewDepositDueDetails");
waitForPageToLoad();
return new ViewDepositDueDetailsPage(selenium);
}
public AccountNotesPage navigateToAccountNotesPage() {
selenium.click("savingsaccountdetail.link.seeAllNotes");
waitForPageToLoad();
return new AccountNotesPage(selenium);
}
public SavingsDepositWithdrawalPage navigateToDepositWithdrawalPage() {
selenium.click("savingsaccountdetail.link.makeDepositWithdrawal");
waitForPageToLoad();
return new SavingsDepositWithdrawalPage(selenium);
}
public SavingsCloseAccountPage navigateToCloseAccount() {
selenium.click("savingsaccountdetail.link.closeAccount");
waitForPageToLoad();
return new SavingsCloseAccountPage(selenium);
}
public SavingsApplyTransferPage navigateToApplyTransferPage() {
selenium.click("savingsaccountdetail.link.applyTransfer");
waitForPageToLoad();
return new SavingsApplyTransferPage(selenium);
}
public AccountChangeStatusPage navigateToEditAccountStatus() {
selenium.click("savingsaccountdetail.link.editAccountStatus");
waitForPageToLoad();
return new AccountChangeStatusPage(selenium);
}
public String getAccountId() {
return selenium.getText("savingsaccountdetail.text.savingsId");
}
public SavingsApplyAdjustmentPage navigateToApplyAdjustmentPage() {
selenium.click("savingsaccountdetail.link.applyAdjustment");
waitForPageToLoad();
SavingsAdjustmentListPage adjustmentListPage = new SavingsAdjustmentListPage(selenium);
adjustmentListPage.verifyPage();
return adjustmentListPage.navigateToFirstAdjustment();
}
public SavingFundTransferEnterDetailsPage navigateToApplyTransferPaymentPage(String clientName, String clientSavingAccountId) {
return navigateToApplyTransferPage().navigateToBeneficientSearch(clientName).customerSelect(clientName)
.navigateToSelectSavingAccount(clientSavingAccountId);
}
public AttachSurveyPage navigateToAttachSurveyPage() {
selenium.click("link=Attach a Question Group");
waitForPageToLoad();
return new AttachSurveyPage(selenium);
}
public ViewQuestionResponseDetailPage navigateToLatestViewQuestionResponseDetailPage(String questionGroupName) {
int linkID = Integer.parseInt(selenium.getAttribute("link="+questionGroupName+"@id"));
linkID++;
if(!selenium.isElementPresent("id="+linkID)) {
linkID--;
}
selenium.click("id="+linkID);
waitForPageToLoad();
return new ViewQuestionResponseDetailPage(selenium);
}
public TransactionHistoryPage navigateToTransactionHistoryPage() {
selenium.click("savingsaccountdetail.link.viewTransactionHistory");
waitForPageToLoad();
return new TransactionHistoryPage(selenium);
}
}