org.openlmis.pageobjects.RegimenTemplateConfigPage.java Source code

Java tutorial

Introduction

Here is the source code for org.openlmis.pageobjects.RegimenTemplateConfigPage.java

Source

/*
 * This program is part of the OpenLMIS logistics management information system platform software.
 * Copyright  2013 VillageReach
 *
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
 * You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses. For additional information contact info@OpenLMIS.org.
 */

package org.openlmis.pageobjects;

import com.thoughtworks.selenium.SeleneseTestNgHelper;
import org.openlmis.UiUtils.TestWebDriver;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;

import static org.openqa.selenium.support.How.ID;

public class RegimenTemplateConfigPage extends Page {

    @FindBy(how = ID, using = "saveRegimen")
    private static WebElement SaveButton = null;

    @FindBy(how = ID, using = "cancelRegimen")
    private static WebElement CancelButton = null;

    @FindBy(how = ID, using = "saveSuccessMsgDiv")
    private static WebElement saveSuccessMsgDiv = null;

    @FindBy(how = ID, using = "saveErrorMsgDiv")
    private static WebElement saveErrorMsgDiv = null;

    @FindBy(how = ID, using = "newRegimenCategory")
    private static WebElement newRegimenCategoryDropDown = null;

    @FindBy(how = ID, using = "newRegimenCode")
    private static WebElement newRegimenCodeTextBox = null;

    @FindBy(how = ID, using = "newRegimenName")
    private static WebElement newRegimenNameTextBox = null;

    @FindBy(how = ID, using = "newRegimenActive")
    private static WebElement newRegimenActiveCheckBox = null;

    @FindBy(how = ID, using = "addNewRegimen")
    private static WebElement addButton = null;

    @FindBy(how = ID, using = "editRegimen")
    private static WebElement editButton = null;

    @FindBy(how = ID, using = "regimenDone")
    private static WebElement doneButton = null;

    @FindBy(how = ID, using = "doneFailMessage")
    private static WebElement doneFailMessage = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='wrap']/div/div/div/div[2]/ul/li[1]/a")
    private static WebElement reportingFieldsTab = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[1]/div/div[1]/span/input")
    private static WebElement noOfPatientsOnTreatmentCheckBox = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[2]/div/div[1]/span/input")
    private static WebElement noOfPatientsToInitiateTreatmentCheckBox = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[3]/div/div[1]/span/input")
    private static WebElement noOfPatientsStoppedTreatmentCheckBox = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[4]/div/div[1]/span/input")
    private static WebElement remarksCheckBox = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[1]/div/div[2]/input")
    private static WebElement noOfPatientsOnTreatmentTextField = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[2]/div/div[2]/input")
    private static WebElement noOfPatientsToInitiateTreatmentTextField = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[3]/div/div[2]/input")
    private static WebElement noOfPatientsStoppedTreatmentTextField = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[4]/div/div[2]/input")
    private static WebElement remarksTextField = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[1]/div/div[3]/span")
    private static WebElement noOfPatientsOnTreatmentDataType = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[2]/div/div[3]/span")
    private static WebElement noOfPatientsToInitiateTreatmentDataType = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[3]/div/div[3]/span")
    private static WebElement noOfPatientsStoppedTreatmentDataType = null;

    @FindBy(how = How.XPATH, using = ".//*[@id='reportingFields']/div[2]/div[4]/div/div[3]/span")
    private static WebElement remarksDataType = null;

    @FindBy(how = ID, using = "regimensTab")
    private static WebElement regimensTab = null;

    private static String baseRegimenDivXpath = "//div[@id='sortable']/div";

    public RegimenTemplateConfigPage(TestWebDriver driver) {
        super(driver);
        PageFactory.initElements(new AjaxElementLocatorFactory(TestWebDriver.getDriver(), 10), this);
        testWebDriver.setImplicitWait(10);
    }

    public void NoOfPatientsOnTreatmentCheckBox(boolean select) {
        if (select)
            selectCheckBox(noOfPatientsOnTreatmentCheckBox);
        else
            unSelectCheckBox(noOfPatientsOnTreatmentCheckBox);
    }

    public void NoOfPatientsToInitiateTreatmentCheckBox(boolean select) {
        if (select)
            selectCheckBox(noOfPatientsToInitiateTreatmentCheckBox);
        else
            unSelectCheckBox(noOfPatientsToInitiateTreatmentCheckBox);
    }

    public void NoOfPatientsStoppedTreatmentCheckBox(boolean select) {
        if (select)
            selectCheckBox(noOfPatientsStoppedTreatmentCheckBox);
        else
            unSelectCheckBox(noOfPatientsStoppedTreatmentCheckBox);
    }

    public void RemarksCheckBox(boolean select) {
        if (select)
            selectCheckBox(remarksCheckBox);
        else
            unSelectCheckBox(remarksCheckBox);
    }

    public boolean IsSelectedNoOfPatientsOnTreatmentCheckBox() {
        return noOfPatientsOnTreatmentCheckBox.isSelected();
    }

    public boolean IsNoOfPatientsToInitiateTreatmentCheckBoxSelected() {
        return noOfPatientsToInitiateTreatmentCheckBox.isSelected();
    }

    public boolean IsNoOfPatientsStoppedTreatmentCheckBoxSelected() {
        return noOfPatientsStoppedTreatmentCheckBox.isSelected();
    }

    public boolean IsRemarksCheckBoxSelected() {
        return remarksCheckBox.isSelected();
    }

    public String getValueNoOfPatientsOnTreatmentTextField() {
        return noOfPatientsOnTreatmentTextField.getAttribute("value");
    }

    public String getValueNoOfPatientsToInitiateTreatmentTextField() {
        return noOfPatientsToInitiateTreatmentTextField.getAttribute("value");
    }

    public String getValueNoOfPatientsStoppedTreatmentTextField() {
        return noOfPatientsStoppedTreatmentTextField.getAttribute("value");
    }

    public String getValueRemarksTextField() {
        return remarksTextField.getAttribute("value");
    }

    public void setValueRemarksTextField(String value) {
        sendKeys(remarksTextField, value);
    }

    public String getTextNoOfPatientsOnTreatmentDataType() {
        return noOfPatientsOnTreatmentDataType.getText().trim();
    }

    public String getTextNoOfPatientsToInitiateTreatmentDataType() {
        return noOfPatientsToInitiateTreatmentDataType.getText().trim();
    }

    public String getTextNoOfPatientsStoppedTreatmentDataType() {
        return noOfPatientsStoppedTreatmentDataType.getText().trim();
    }

    public String getTextRemarksDataType() {
        return remarksDataType.getText().trim();
    }

    public void addNewRegimen(String category, String code, String name, Boolean isActive) {
        testWebDriver.waitForElementsToAppear(newRegimenCategoryDropDown, newRegimenCodeTextBox);
        testWebDriver.selectByVisibleText(newRegimenCategoryDropDown, category);
        newRegimenCodeTextBox.sendKeys(code);
        newRegimenNameTextBox.sendKeys(name);
        if (isActive)
            newRegimenActiveCheckBox.click();
        addButton.click();
    }

    public void clickReportingFieldTab() {
        testWebDriver.waitForElementToAppear(reportingFieldsTab);
        reportingFieldsTab.click();
        testWebDriver.waitForElementToAppear(noOfPatientsOnTreatmentCheckBox);
    }

    public void selectCheckBox(WebElement locator) {
        if (!locator.isSelected()) {
            locator.click();
        }
    }

    public void unSelectCheckBox(WebElement locator) {
        if (locator.isSelected()) {
            locator.click();
        }
    }

    public boolean IsDisplayedDoneFailMessage() {
        testWebDriver.waitForElementToAppear(doneFailMessage);
        return doneFailMessage.isDisplayed();
    }

    public void clickSaveButton() {
        testWebDriver.waitForElementToAppear(SaveButton);
        SaveButton.click();
    }

    public void clickCancelButton() {
        testWebDriver.waitForElementToAppear(CancelButton);
        CancelButton.click();
    }

    public boolean isDisplayedSaveSuccessMsgDiv() {
        testWebDriver.waitForElementToAppear(saveSuccessMsgDiv);
        return saveSuccessMsgDiv.isDisplayed();
    }

    public String getSaveSuccessMsgDiv() {
        testWebDriver.waitForElementToAppear(saveSuccessMsgDiv);
        return saveSuccessMsgDiv.getText().trim();
    }

    public boolean IsDisplayedSaveErrorMsgDiv() {
        testWebDriver.waitForElementToAppear(saveErrorMsgDiv);
        return saveErrorMsgDiv.isDisplayed();
    }

    public String getSaveErrorMsgDiv() {
        testWebDriver.waitForElementToAppear(saveErrorMsgDiv);
        return saveErrorMsgDiv.getText().trim();
    }

    public String getNonEditableAddedCode(int indexOfCodeAdded) {
        testWebDriver.waitForElementToAppear(testWebDriver
                .getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[2]/div/span"));
        return testWebDriver.getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[2]/div/span")
                .getText().trim();
    }

    public String getNonEditableAddedName(int indexOfCodeAdded) {
        testWebDriver.waitForElementToAppear(testWebDriver
                .getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[2]/div/span"));
        return testWebDriver.getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[3]/div/span")
                .getText().trim();
    }

    public boolean getNonEditableAddedActiveCheckBox(int indexOfCodeAdded) {
        testWebDriver.waitForElementToAppear(testWebDriver
                .getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[2]/div/span"));
        return testWebDriver.getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[4]/input")
                .isSelected();
    }

    public String getEditableAddedCode(int indexOfCodeAdded) {
        testWebDriver.waitForElementToAppear(
                testWebDriver.getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[2]/input"));
        return testWebDriver.getAttribute(
                testWebDriver.getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[2]/input"),
                "value").trim();
    }

    public String getEditableAddedName(int indexOfCodeAdded) {
        testWebDriver.waitForElementToAppear(
                testWebDriver.getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[2]/input"));
        return testWebDriver.getAttribute(
                testWebDriver.getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[3]/input"),
                "value").trim();
    }

    public boolean getEditableAddedActiveCheckBox(int indexOfCodeAdded) {
        testWebDriver.waitForElementToAppear(
                testWebDriver.getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[2]/input"));
        return testWebDriver.getElementByXpath(baseRegimenDivXpath + "[" + indexOfCodeAdded + "]/div[4]/input")
                .isSelected();
    }

    public void configureProgram(String program) {
        WebElement configureProgram = testWebDriver.getElementById(program);
        testWebDriver.waitForElementToAppear(configureProgram);
        configureProgram.click();
        testWebDriver.waitForElementToAppear(regimensTab);
        regimensTab.click();
        testWebDriver.waitForElementToAppear(addButton);
    }

    public void clickEditProgram(String program) throws InterruptedException {
        testWebDriver.waitForElementToAppear(testWebDriver.getElementByXpath("//a[@id='" + program + "']"));
        testWebDriver.getElementByXpath("//a[@id='" + program + "']").click();
        Thread.sleep(100);
        testWebDriver.getElementByXpath(".//*[@id='wrap']/div/div/div/div[2]/ul/li[2]/a").click();
        testWebDriver.waitForElementToAppear(addButton);
    }

    public void clickEditButton() {
        testWebDriver.waitForElementToAppear(editButton);
        editButton.click();
        testWebDriver.waitForElementToAppear(doneButton);
    }

    public void clickDoneButton() {
        testWebDriver.waitForElementToAppear(doneButton);
        doneButton.click();
        testWebDriver.waitForElementsToAppear(editButton, saveErrorMsgDiv, doneFailMessage);
    }

    public void SaveRegime() {
        SaveButton.click();
    }

    public void verifySaveErrorMessageDiv(String errorMessage) {
        testWebDriver.waitForElementToAppear(saveErrorMsgDiv);
        SeleneseTestNgHelper.assertEquals(errorMessage, saveErrorMsgDiv.getText());
    }

    public void CancelRegime(String program) {
        testWebDriver.waitForElementToAppear(CancelButton);
        CancelButton.click();
        testWebDriver.waitForElementToAppear(testWebDriver.getElementByXpath("//a[@id='" + program + "']/span"));
    }

    public void sendKeys(WebElement locator, String value) {
        int length = testWebDriver.getAttribute(locator, "value").length();
        for (int i = 0; i < length; i++) {
            locator.sendKeys(Keys.ARROW_RIGHT);
        }
        for (int i = 0; i < length; i++) {
            locator.sendKeys("\u0008");
        }
        locator.sendKeys(value);
    }
}