org.openlmis.pageobjects.VisitInformationPage.java Source code

Java tutorial

Introduction

Here is the source code for org.openlmis.pageobjects.VisitInformationPage.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.How;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

public class VisitInformationPage extends DistributionTab {

    public static final String VERIFIED_BY_NAME = "verifiedByName";
    public static final String VERIFIED_BY_TITLE = "verifiedByTitle";
    public static final String CONFIRMED_BY_NAME = "confirmedByName";
    public static final String CONFIRMED_BY_TITLE = "confirmedByTitle";
    public static final String OBSERVATIONS = "observations";
    public static final String VALUE = "value";
    public static final String VEHICLE_ID = "vehicleId";

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

    @FindBy(how = ID, using = "facilityVisitTabIcon")
    public static WebElement facilityVisitTabIcon = null;

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

    @FindBy(how = ID, using = "facilityVisitTabLabel")
    public static WebElement facilityVisitTabLabel = null;

    @FindBy(how = ID, using = OBSERVATIONS)
    public static WebElement observationsField = null;

    @FindBy(how = ID, using = VERIFIED_BY_NAME)
    public static WebElement verifiedByNameField = null;

    @FindBy(how = ID, using = VERIFIED_BY_TITLE)
    public static WebElement verifiedByTitleField = null;

    @FindBy(how = ID, using = CONFIRMED_BY_NAME)
    public static WebElement confirmedByNameField = null;

    @FindBy(how = ID, using = CONFIRMED_BY_TITLE)
    public static WebElement confirmedByTitleField = null;

    @FindBy(how = ID, using = "wasFacilityVisited")
    public static WebElement wasFacilityVisitedLabel = null;

    @FindBy(how = ID, using = "facilityVisitedYes")
    public static WebElement facilityVisitedYesRadioButton = null;

    @FindBy(how = ID, using = "facilityVisitedNo")
    public static WebElement facilityVisitedNoRadioButton = null;

    @FindBy(how = ID, using = "visitDate")
    public static WebElement visitDateField = null;

    @FindBy(how = ID, using = "vehicleId")
    public static WebElement vehicleIdField = null;

    @FindBy(how = How.XPATH, using = "//a[contains(@class,'ui-state-highlight')]")
    private static WebElement calender = null;

    @FindBy(how = ID, using = "badWeather")
    public static WebElement badWeather = null;

    @FindBy(how = ID, using = "noTransport")
    public static WebElement noTransport = null;

    @FindBy(how = ID, using = "facilityClosed")
    public static WebElement facilityClosed = null;

    @FindBy(how = ID, using = "unavailableFunds")
    public static WebElement unavailableFunds = null;

    @FindBy(how = ID, using = "notPartOfProgram")
    public static WebElement notPartOfProgram = null;

    @FindBy(how = ID, using = "other")
    public static WebElement other = null;

    @FindBy(how = ID, using = "otherTextBox")
    public static WebElement otherTextBox = null;

    public Map<String, WebElement> fieldMap = new HashMap<String, WebElement>() {
        {
            put(VEHICLE_ID, vehicleIdField);
            put(OBSERVATIONS, observationsField);
            put(CONFIRMED_BY_NAME, confirmedByNameField);
            put(CONFIRMED_BY_TITLE, confirmedByTitleField);
            put(VERIFIED_BY_TITLE, verifiedByTitleField);
            put(VERIFIED_BY_NAME, verifiedByNameField);
        }
    };

    public VisitInformationPage(TestWebDriver driver) {
        super(driver);
    }

    @Override
    public void verifyIndicator(String color) {
        removeFocusFromElement();
        verifyOverallIndicator(facilityVisitTabIcon, color);
    }

    @Override
    public void enterValues(List<Map<String, String>> data) {
        Map<String, String> map = data.get(0);
        sendKeys(fieldMap.get(OBSERVATIONS), map.get(OBSERVATIONS));
        fieldMap.get(OBSERVATIONS).sendKeys(Keys.TAB);
        sendKeys(fieldMap.get(VERIFIED_BY_NAME), map.get(VERIFIED_BY_NAME));
        fieldMap.get(VERIFIED_BY_NAME).sendKeys(Keys.TAB);
        sendKeys(fieldMap.get(VERIFIED_BY_TITLE), map.get(VERIFIED_BY_TITLE));
        fieldMap.get(VERIFIED_BY_TITLE).sendKeys(Keys.TAB);
        sendKeys(fieldMap.get(CONFIRMED_BY_NAME), map.get(CONFIRMED_BY_NAME));
        fieldMap.get(CONFIRMED_BY_NAME).sendKeys(Keys.TAB);
        sendKeys(fieldMap.get(CONFIRMED_BY_TITLE), map.get(CONFIRMED_BY_TITLE));
        fieldMap.get(CONFIRMED_BY_TITLE).sendKeys(Keys.TAB);
    }

    @Override
    public void verifyData(List<Map<String, String>> data) {
        for (Map<String, String> visitInformationData : data) {
            assertEquals(fieldMap.get(VEHICLE_ID).getAttribute(VALUE), visitInformationData.get(VEHICLE_ID));
            assertEquals(fieldMap.get(OBSERVATIONS).getAttribute(VALUE), visitInformationData.get(OBSERVATIONS));
            assertEquals(fieldMap.get(VERIFIED_BY_NAME).getAttribute(VALUE),
                    visitInformationData.get(VERIFIED_BY_NAME));
            assertEquals(fieldMap.get(VERIFIED_BY_TITLE).getAttribute(VALUE),
                    visitInformationData.get(VERIFIED_BY_TITLE));
            assertEquals(fieldMap.get(CONFIRMED_BY_NAME).getAttribute(VALUE),
                    visitInformationData.get(CONFIRMED_BY_NAME));
            assertEquals(fieldMap.get(CONFIRMED_BY_TITLE).getAttribute(VALUE),
                    visitInformationData.get(CONFIRMED_BY_TITLE));
        }
    }

    @Override
    public void navigate() {
        testWebDriver.sleep(1000);
        facilityVisitTab.click();
        removeFocusFromElement();
    }

    public String getVisitInformationPageLabel() {
        testWebDriver.waitForElementToAppear(visitInformationLabel);
        return visitInformationLabel.getText();
    }

    public void enterObservations(String observations) {
        testWebDriver.waitForElementToAppear(observationsField);
        sendKeys(observationsField, observations);
        observationsField.sendKeys(Keys.TAB);
    }

    public void enterConfirmedByName(String confirmedByName) {
        testWebDriver.waitForElementToAppear(confirmedByNameField);
        sendKeys(confirmedByNameField, confirmedByName);
        confirmedByNameField.sendKeys(Keys.TAB);
    }

    public void enterConfirmedByTitle(String confirmedByTitle) {
        testWebDriver.waitForElementToAppear(confirmedByTitleField);
        sendKeys(confirmedByTitleField, confirmedByTitle);
        confirmedByTitleField.sendKeys(Keys.TAB);
    }

    public void enterVerifiedByName(String verifiedByName) {
        testWebDriver.waitForElementToAppear(verifiedByNameField);
        sendKeys(verifiedByNameField, verifiedByName);
        verifiedByNameField.sendKeys(Keys.TAB);
    }

    public void enterVerifiedByTitle(String verifiedByTitle) {
        testWebDriver.waitForElementToAppear(verifiedByTitleField);
        sendKeys(verifiedByTitleField, verifiedByTitle);
        verifiedByTitleField.sendKeys(Keys.TAB);
    }

    public void enterVisitDateAsCurrentDate() {
        testWebDriver.waitForElementToAppear(visitDateField);
        visitDateField.click();
        testWebDriver.waitForElementToAppear(calender);
        calender.click();
        visitDateField.sendKeys(Keys.TAB);
    }

    public void enterVehicleId(String vehicleId) {
        testWebDriver.waitForElementToAppear(vehicleIdField);
        sendKeys(vehicleIdField, vehicleId);
        vehicleIdField.sendKeys(Keys.TAB);
    }

    public String getFacilityVisitTabLabel() {
        testWebDriver.waitForElementToAppear(facilityVisitTabLabel);
        return facilityVisitTabLabel.getText();
    }

    public String getWasFacilityVisitedLabel() {
        testWebDriver.waitForElementToAppear(wasFacilityVisitedLabel);
        return wasFacilityVisitedLabel.getText();
    }

    public void selectFacilityVisitedYes() {
        testWebDriver.waitForElementToAppear(facilityVisitedYesRadioButton);
        facilityVisitedYesRadioButton.click();
        removeFocusFromElement();
    }

    public void selectFacilityVisitedNo() {
        testWebDriver.waitForElementToAppear(facilityVisitedNoRadioButton);
        facilityVisitedNoRadioButton.click();
        removeFocusFromElement();
    }

    public boolean isYesRadioButtonSelected() {
        testWebDriver.waitForElementToAppear(facilityVisitedYesRadioButton);
        return facilityVisitedYesRadioButton.isSelected();
    }

    public boolean isNoRadioButtonSelected() {
        testWebDriver.waitForElementToAppear(facilityVisitedNoRadioButton);
        return facilityVisitedNoRadioButton.isSelected();
    }

    public String getVisitDate() {
        testWebDriver.waitForElementToAppear(visitDateField);
        return visitDateField.getAttribute("value");
    }

    public void selectReasonBadWeather() {
        testWebDriver.waitForElementToAppear(badWeather);
        badWeather.click();
        removeFocusFromElement();
    }

    public void selectReasonNoTransport() {
        testWebDriver.waitForElementToAppear(noTransport);
        noTransport.click();
        removeFocusFromElement();
    }

    public void selectReasonOther() {
        testWebDriver.waitForElementToAppear(other);
        other.click();
        removeFocusFromElement();
    }

    public void enterOtherReasonInTextBox(String reason) {
        testWebDriver.waitForElementToAppear(otherTextBox);
        sendKeys(otherTextBox, reason);
        otherTextBox.sendKeys(Keys.TAB);
    }

    public void verifyAllFieldsDisabled() {
        assertFalse("Yes radio button was enabled.", facilityVisitedYesRadioButton.isEnabled());
        assertFalse("No radio button was enabled.", facilityVisitedNoRadioButton.isEnabled());
        if (isYesRadioButtonSelected()) {
            assertFalse("Observation field enabled.", observationsField.isEnabled());
            assertFalse("ConfirmedBy name field enabled.", confirmedByNameField.isEnabled());
            assertFalse("ConfirmedBy title field enabled.", confirmedByTitleField.isEnabled());
            assertFalse("VerifiedBy name field enabled.", verifiedByNameField.isEnabled());
            assertFalse("VerifiedBy title Field field enabled.", verifiedByTitleField.isEnabled());
            assertFalse("Visit date field was enabled.", visitDateField.isEnabled());
            assertFalse("vehicle id field was enabled.", vehicleIdField.isEnabled());
        } else if (isNoRadioButtonSelected()) {
            assertFalse("Bad Weather reason radio button enabled.", badWeather.isEnabled());
            assertFalse("No Transport reason radio button enabled.", noTransport.isEnabled());
            assertFalse("Facility Closed radio button enabled.", facilityClosed.isEnabled());
            assertFalse("Unavailable Funds radio button enabled.", unavailableFunds.isEnabled());
            assertFalse("Not Part Of Program radio button enabled.", notPartOfProgram.isEnabled());
            assertFalse("Other radio button enabled.", other.isEnabled());
            assertFalse("Other reason text field was enabled.", otherTextBox.isEnabled());
        }
    }

    public void enterDataWhenFacilityVisited(String confirmName, String confirmTitle, String verifierName,
            String verifierTitle) {
        selectFacilityVisitedYes();
        enterVisitDateAsCurrentDate();
        enterConfirmedByName(confirmName);
        enterConfirmedByTitle(confirmTitle);
        enterVerifiedByName(verifierName);
        enterVerifiedByTitle(verifierTitle);
    }

    @Override
    public void removeFocusFromElement() {
        testWebDriver.waitForElementToAppear(visitInformationLabel);
        visitInformationLabel.click();
    }

    public boolean isOtherReasonSelected() {
        testWebDriver.waitForElementToAppear(other);
        return other.isSelected();
    }

    public String getOtherReason() {
        testWebDriver.waitForElementToAppear(otherTextBox);
        return otherTextBox.getAttribute("value");
    }
}