org.openlmis.pageobjects.FacilityListPage.java Source code

Java tutorial

Introduction

Here is the source code for org.openlmis.pageobjects.FacilityListPage.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 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.PageFactory;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;

import java.util.List;

import static com.thoughtworks.selenium.SeleneseTestBase.assertTrue;
import static com.thoughtworks.selenium.SeleneseTestNgHelper.assertEquals;
import static org.openqa.selenium.support.How.ID;
import static org.openqa.selenium.support.How.XPATH;

public class FacilityListPage extends RequisitionPage {

    @FindBy(how = XPATH, using = "//*[@id='select2-drop']/div/input")
    private static WebElement inputFacilitySearch = null;

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

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

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

    @FindBy(how = XPATH, using = "//*[@id='s2id_selectFacility']/a")
    private static WebElement facilityListSelect = null;

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

    @FindBy(how = XPATH, using = "//div[@id='select2-drop']/div/input")
    private static WebElement facilityListTextField = null;

    @FindBy(how = XPATH, using = "//div[@id='select2-drop']/ul/li/ul/li/div/div")
    private static WebElement facilityListSelectField = null;

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

    @FindBy(how = XPATH, using = "//div[@class='select2-result-label']/div/span[@class='status-icon']")
    private static WebElement firstFacilityIndicator = null;

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

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

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

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

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

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

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

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

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

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

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

    public String getFacilitiesInDropDown() {
        testWebDriver.waitForElementToAppear(facilityListDropDown);
        return facilityListDropDown.getText();
    }

    public void verifyNoFacilitySelected() {
        testWebDriver.waitForElementToAppear(noFacilitySelectedHeader);
        assertTrue("noFacilitySelectedHeader should show", noFacilitySelectedHeader.isDisplayed());
    }

    public List<WebElement> getAllFacilitiesFromDropDown() {
        return testWebDriver.getOptions(facilityListDropDown);
    }

    public void verifyHeaderElements(String deliveryZone, String program, String period) {
        testWebDriver.sleep(1000);
        testWebDriver.waitForElementToAppear(testWebDriver.getElementByXpath(
                "//div[@class='info-box']/div[@class='row-fluid']/div[2][@class='span3 offset1 info-box-labels']/span[@class='ng-binding']"));
        assertEquals(deliveryZone, testWebDriver.getElementByXpath(
                "//div[@class='info-box']/div[@class='row-fluid']/div[2][@class='span3 offset1 info-box-labels']/span[@class='ng-binding']")
                .getText());
        assertEquals(program, testWebDriver.getElementByXpath(
                "//div[@class='info-box']/div[@class='row-fluid']/div[3][@class='span3 info-box-labels']/span[@class='ng-binding']")
                .getText());
        assertEquals(period, testWebDriver.getElementByXpath(
                "//div[@class='info-box']/div[@class='row-fluid']/div[4][@class='span2 info-box-labels']/span[@class='ng-binding']")
                .getText());
    }

    public void verifyGeographicZoneOrder(String geoZoneFirst, String geoZoneSecond) {
        testWebDriver.sleep(1500);
        assertEquals(geoZoneFirst,
                testWebDriver.getElementByXpath("//*[@id='select2-drop']/ul/li[1]/div").getText());
        assertEquals(geoZoneSecond,
                testWebDriver.getElementByXpath("//*[@id='select2-drop']/ul/li[2]/div").getText());
    }

    public VisitInformationPage selectFacility(String facilityCode) {
        clickFacilityListDropDown();
        testWebDriver.waitForElementToAppear(facilityListTextField);
        facilityListTextField.clear();
        facilityListTextField.sendKeys(facilityCode);
        testWebDriver.waitForElementToAppear(facilityListSelectField);
        facilityListSelectField.click();
        testWebDriver.sleep(250);
        return PageObjectFactory.getVisitInformationPage(testWebDriver);
    }

    public void clickFacilityListDropDown() {
        testWebDriver.sleep(2000);
        testWebDriver.waitForElementToAppear(facilityListSelect);
        facilityListSelect.click();
        testWebDriver.sleep(2000);
    }

    public void verifyFacilityNameInHeader(String facilityName) {
        testWebDriver.sleep(500);
        testWebDriver.waitForElementToAppear(facilityPageHeaderName);
        assertEquals(facilityPageHeaderName.getText(), facilityName);
    }

    public void verifyFacilityZoneInHeader(String facilityZone) {
        testWebDriver.sleep(500);
        testWebDriver.waitForElementToAppear(facilityPageHeaderZone);
        assertEquals(facilityPageHeaderZone.getText(), facilityZone);
    }

    public void verifyOverallFacilityIndicatorColor(String color) {
        testWebDriver.waitForElementToAppear(facilityOverAllIndicator);
        if (color.toLowerCase().equals("RED".toLowerCase()))
            color = "rgba(203, 64, 64, 1)";
        else if (color.toLowerCase().equals("GREEN".toLowerCase()))
            color = "rgba(69, 182, 0, 1)";
        else if (color.toLowerCase().equals("AMBER".toLowerCase()))
            color = "rgba(240, 165, 19, 1)";
        else if (color.toLowerCase().equals("Blue".toLowerCase()))
            color = "rgba(22, 131, 230, 1)";

        assertEquals(facilityOverAllIndicator.getCssValue("background-color"), color);
    }

    public void verifyIndividualFacilityIndicatorColor(String facilityCode, String color) {
        testWebDriver.waitForElementToAppear(facilityOverAllIndicator);
        if (color.toLowerCase().equals("RED".toLowerCase()))
            color = "rgba(203, 64, 64, 1)";
        else if (color.toLowerCase().equals("GREEN".toLowerCase()))
            color = "rgba(69, 182, 0, 1)";
        else if (color.toLowerCase().equals("AMBER".toLowerCase()))
            color = "rgba(240, 165, 19, 1)";
        else if (color.toLowerCase().equals("Blue".toLowerCase()))
            color = "rgba(22, 131, 230, 1)";

        clickFacilityListDropDown();
        testWebDriver.waitForElementToAppear(facilityListTextField);
        inputFacilitySearch.sendKeys(facilityCode);
        assertEquals(firstFacilityIndicator.getCssValue("background-color"), color);
        inputFacilitySearch.clear();
        inputFacilitySearch.sendKeys(Keys.ESCAPE);
    }

    public void verifyLegend() {
        assertEquals(legendNotStartedText.getText(), "Not started");
        assertEquals(legendPartiallyCompletedText.getText(), "Partially completed");
        assertEquals(legendCompletedText.getText(), "Completed");
        assertEquals(legendSynchronizedText.getText(), "Synced");
        assertEquals(legendCannotSynchronizedText.getText(), "Cannot sync");

        assertEquals(legendNotStartedIcon.getCssValue("background-color"), "rgba(203, 64, 64, 1)");
        assertEquals(legendPartiallyCompletedIcon.getCssValue("background-color"), "rgba(240, 165, 19, 1)");
        assertEquals(legendCompletedIcon.getCssValue("background-color"), "rgba(69, 182, 0, 1)");
        assertEquals(legendSynchronizedIcon.getCssValue("background-color"), "rgba(22, 131, 230, 1)");
        assertEquals(legendCannotSynchronizedIcon.getCssValue("background-color"), "rgba(124, 124, 124, 1)");
    }
}