/*
* 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.testhelpers;
import org.mifos.test.acceptance.framework.AppLauncher;
import org.mifos.test.acceptance.framework.ClientsAndAccountsHomepage;
import org.mifos.test.acceptance.framework.HomePage;
import org.mifos.test.acceptance.framework.admin.AdminPage;
import org.mifos.test.acceptance.framework.admin.ViewSystemUsersPage;
import org.mifos.test.acceptance.framework.center.CenterViewDetailsPage;
import org.mifos.test.acceptance.framework.center.CreateCenterChooseOfficePage;
import org.mifos.test.acceptance.framework.center.CreateCenterEnterDataPage;
import org.mifos.test.acceptance.framework.client.ClientViewDetailsPage;
import org.mifos.test.acceptance.framework.client.CreateClientEnterMfiDataPage;
import org.mifos.test.acceptance.framework.client.CreateClientEnterPersonalDataPage;
import org.mifos.test.acceptance.framework.group.GroupSearchPage;
import org.mifos.test.acceptance.framework.group.GroupViewDetailsPage;
import org.mifos.test.acceptance.framework.loan.LoanAccountPage;
import org.mifos.test.acceptance.framework.loanproduct.DefineNewLoanProductPage;
import org.mifos.test.acceptance.framework.loanproduct.LoanProductDetailsPage;
import org.mifos.test.acceptance.framework.loanproduct.ViewLoanProductsPage;
import org.mifos.test.acceptance.framework.login.LoginPage;
import org.mifos.test.acceptance.framework.office.ChooseOfficePage;
import org.mifos.test.acceptance.framework.savings.SavingsAccountDetailPage;
import org.mifos.test.acceptance.framework.search.SearchResultsPage;
import com.thoughtworks.selenium.Selenium;
public class NavigationHelper {
private final Selenium selenium;
public NavigationHelper(Selenium selenium) {
this.selenium = selenium;
}
public HomePage navigateToHomePage() {
LoginPage loginPage = new AppLauncher(selenium).launchMifos();
loginPage.verifyPage();
HomePage homePage = loginPage.loginSuccessfullyUsingDefaultCredentials();
homePage.verifyPage();
return homePage;
}
public AdminPage navigateToAdminPage() {
HomePage homePage = navigateToHomePage();
AdminPage adminPage = homePage.navigateToAdminPage();
adminPage.verifyPage();
return adminPage;
}
public HomePage navigateToHomePageAsLogedUser(String userName, String password) {
LoginPage loginPage = new AppLauncher(selenium).launchMifos();
loginPage.verifyPage();
HomePage homePage = loginPage.loginSuccessfulAs(userName, password);
homePage.verifyPage();
return homePage;
}
public AdminPage navigateToAdminPageAsLogedUser(String userName, String password) {
HomePage homePage = navigateToHomePageAsLogedUser(userName,password);
AdminPage adminPage = homePage.navigateToAdminPage();
adminPage.verifyPage();
return adminPage;
}
public HomePage navigateToHomePageAsNewUser(String userName, String oldPassword) {
LoginPage loginPage = new AppLauncher(selenium).launchMifos();
loginPage.verifyPage();
HomePage homePage = loginPage.loginSuccessfulAsWithChnagePasw(userName, oldPassword);
homePage.verifyPage();
return homePage;
}
public LoanAccountPage navigateToLoanAccountPage(String loanAccountID) {
HomePage homePage = navigateToHomePage();
SearchResultsPage searchResultsPage = homePage.search(loanAccountID);
searchResultsPage.verifyPage();
LoanAccountPage loanAccountPage = searchResultsPage.navigateToLoanAccountDetailPage(loanAccountID);
return loanAccountPage;
}
public SavingsAccountDetailPage navigateToSavingsAccountDetailPage(String savingsAccountID) {
HomePage homePage = navigateToHomePage();
SearchResultsPage searchResultsPage = homePage.search(savingsAccountID);
searchResultsPage.verifyPage();
SavingsAccountDetailPage savingsAccountDetailPage = searchResultsPage.navigateToSavingsAccountDetailPage(savingsAccountID);
savingsAccountDetailPage.verifyPage();
return savingsAccountDetailPage;
}
public ClientViewDetailsPage navigateToClientViewDetailsPage(String clientName) {
HomePage homePage = navigateToHomePage();
SearchResultsPage searchResultsPage = homePage.search(clientName);
searchResultsPage.verifyPage();
return searchResultsPage.navigateToClientViewDetailsPage("link=*" + clientName + "*");
}
public CenterViewDetailsPage navigateToCenterViewDetailsPage(String centerName) {
HomePage homePage = navigateToHomePage();
SearchResultsPage searchResultsPage = homePage.search(centerName);
searchResultsPage.verifyPage();
CenterViewDetailsPage centerDetailsPage = searchResultsPage.navigateToCenterViewDetailsPage("link=" + centerName + "*");
centerDetailsPage.verifyPage();
return centerDetailsPage;
}
public ViewSystemUsersPage navigateToFindUserPage() {
AdminPage adminPage = navigateToAdminPage();
ViewSystemUsersPage findUserPage = adminPage.navigateToViewSystemUsersPage();
return findUserPage;
}
public LoanProductDetailsPage navigateToLoanProductDetailsPage(String loanProduct)
{
ViewLoanProductsPage loanProductsPage = navigateToLoanProductsPage();
LoanProductDetailsPage loanProductDetailsPage = loanProductsPage.viewLoanProductDetails(loanProduct);
loanProductDetailsPage.verifyPage();
return loanProductDetailsPage;
}
public GroupViewDetailsPage navigateToGroupViewDetailsPage(String groupName) {
HomePage homePage = navigateToHomePage();
SearchResultsPage searchResultsPage = homePage.search(groupName);
searchResultsPage.verifyPage();
GroupViewDetailsPage groupDetailsPage = searchResultsPage.navigateToGroupViewDetailsPage("link=" + groupName + "*");
return groupDetailsPage;
}
public ClientsAndAccountsHomepage navigateToClientsAndAccountsPage() {
HomePage homePage = navigateToHomePage();
return homePage.navigateToClientsAndAccountsUsingHeaderTab();
}
public ChooseOfficePage navigateToCreateUserPage() {
AdminPage adminPage = navigateToAdminPage();
ChooseOfficePage createUserPage = adminPage.navigateToCreateUserPage();
createUserPage.verifyPage();
return createUserPage;
}
public ViewLoanProductsPage navigateToLoanProductsPage() {
AdminPage adminPage = navigateToAdminPage();
ViewLoanProductsPage loanProductsPage = adminPage.navigateToViewLoanProducts();
loanProductsPage.verifyPage();
return loanProductsPage;
}
public DefineNewLoanProductPage navigateToDefineNewLoanProductPage() {
AdminPage adminPage = navigateToAdminPage();
return adminPage.navigateToDefineLoanProduct();
}
public CreateCenterEnterDataPage navigateToCreateCenterEnterDataPage(String officeName){
ClientsAndAccountsHomepage clientsAccountsPage = navigateToClientsAndAccountsPage();
CreateCenterChooseOfficePage chooseOfficePage = clientsAccountsPage.navigateToCreateNewCenterPage();
return chooseOfficePage.selectOffice(officeName);
}
public CreateClientEnterPersonalDataPage navigateToCreateClientEnterPersonalDataPage(String officeName) {
ClientsAndAccountsHomepage clientsAccountsPage = navigateToClientsAndAccountsPage();
GroupSearchPage groupSearchPage = clientsAccountsPage.navigateToCreateNewClientPage();
org.mifos.test.acceptance.framework.client.ChooseOfficePage chooseOfficePage = groupSearchPage.navigateToCreateClientWithoutGroupPage();
return chooseOfficePage.chooseOffice(officeName);
}
public CreateClientEnterMfiDataPage navigateToCreateClientEnterMfiDataPage(String officeName) {
CreateClientEnterPersonalDataPage clientPersonalDataPage = navigateToCreateClientEnterPersonalDataPage(officeName);
CreateClientEnterPersonalDataPage.SubmitFormParameters formParameters = FormParametersHelper.getClientEnterPersonalDataPageFormParameters();
clientPersonalDataPage=clientPersonalDataPage.create(formParameters);
return clientPersonalDataPage.submitAndGotoCreateClientEnterMfiDataPage();
}
}