/*
* 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 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 FullCoveragePage extends DistributionTab {
@FindBy(how = ID, using = "coverageTabLabel")
private static WebElement fullCoverageTabLabel = null;
@FindBy(how = ID, using = "coverageTabIcon")
public static WebElement fullCoverageIndicator = null;
@FindBy(how = ID, using = "coverageHeader")
public static WebElement fullCoverageHeader = null;
@FindBy(how = ID, using = "completeVaccinatedHeader")
public static WebElement completeVaccinatedHeader = null;
@FindBy(how = ID, using = "healthCenterHeader")
public static WebElement healthCenterHeader = null;
@FindBy(how = ID, using = "mobileBrigadeHeader")
public static WebElement mobileBrigadeHeader = null;
@FindBy(how = ID, using = "femaleHeader")
public static WebElement femaleHeader = null;
@FindBy(how = ID, using = "maleHeader")
public static WebElement maleHeader = null;
@FindBy(how = ID, using = "femaleHealthCenter")
public static WebElement femaleHealthCenterField = null;
@FindBy(how = ID, using = "femaleMobileBrigade")
public static WebElement femaleMobileBrigadeField = null;
@FindBy(how = ID, using = "maleHealthCenter")
public static WebElement maleHealthCenterField = null;
@FindBy(how = ID, using = "maleMobileBrigade")
public static WebElement maleMobileBrigadeField = null;
@FindBy(how = ID, using = "CoverageFormApplyNRToAll")
public static WebElement fullCoverageFormApplyNRToAll = null;
@FindBy(how = ID, using = "coverageFemaleMB")
public static WebElement femaleMobileBrigadeNR = null;
@FindBy(how = ID, using = "coverageMaleHC")
public static WebElement maleHealthCenterNR = null;
@FindBy(how = ID, using = "button_OK")
public static WebElement okButton = null;
@FindBy(how = ID, using = "coverageMaleMB")
public static WebElement maleMobileBrigadeNR = null;
private Map<String, WebElement> fullCoveragePageElements = new HashMap<String, WebElement>() {{
put("femaleHealthCenter", femaleHealthCenterField);
put("femaleMobileBrigade", femaleMobileBrigadeField);
put("maleHealthCenter", maleHealthCenterField);
put("maleMobileBrigade", maleMobileBrigadeField);
}};
public FullCoveragePage(TestWebDriver driver) {
super(driver);
}
@Override
public void verifyIndicator(String color) {
verifyOverallIndicator(fullCoverageIndicator, color);
}
@Override
public void enterValues(List<Map<String, String>> dataMapList) {
Map<String, String> data = dataMapList.get(0);
enterFemaleHealthCenter(Integer.valueOf(data.get("femaleHealthCenter")));
enterFemaleMobileBrigade(Integer.valueOf(data.get("femaleMobileBrigade")));
enterMaleHealthCenter(Integer.valueOf(data.get("maleHealthCenter")));
enterMaleMobileBrigade(data.get("maleMobileBrigade"));
}
@Override
public void verifyData(List<Map<String, String>> data) {
for (Map<String, String> fullCoverageData : data) {
assertEquals(fullCoveragePageElements.get("femaleHealthCenter").getAttribute("value"), fullCoverageData.get("femaleHealthCenter"));
assertEquals(fullCoveragePageElements.get("femaleMobileBrigade").getAttribute("value"), fullCoverageData.get("femaleMobileBrigade"));
assertEquals(fullCoveragePageElements.get("maleHealthCenter").getAttribute("value"), fullCoverageData.get("maleHealthCenter"));
assertEquals(fullCoveragePageElements.get("maleMobileBrigade").getAttribute("value"), fullCoverageData.get("maleMobileBrigade"));
}
}
@Override
public void navigate() {
fullCoverageTabLabel.click();
removeFocusFromElement();
}
@Override
public void verifyAllFieldsDisabled() {
assertFalse(getStatusForField("femaleHealthCenter"));
assertFalse(getStatusForField("femaleMobileBrigade"));
assertFalse(getStatusForField("maleHealthCenter"));
assertFalse(getStatusForField("maleMobileBrigade"));
}
public String getFullCoverageTabLabel() {
return fullCoverageTabLabel.getText();
}
public void enterFemaleHealthCenter(Integer femaleHealthCenter) {
testWebDriver.waitForElementToAppear(femaleHealthCenterField);
sendKeys(femaleHealthCenterField, femaleHealthCenter.toString());
femaleHealthCenterField.sendKeys(Keys.TAB);
}
public void enterFemaleMobileBrigade(Integer femaleMobileBrigade) {
testWebDriver.waitForElementToAppear(femaleMobileBrigadeField);
sendKeys(femaleMobileBrigadeField, femaleMobileBrigade.toString());
femaleMobileBrigadeField.sendKeys(Keys.TAB);
}
public void enterMaleHealthCenter(Integer maleHealthCenter) {
testWebDriver.waitForElementToAppear(maleHealthCenterField);
sendKeys(maleHealthCenterField, maleHealthCenter.toString());
maleHealthCenterField.sendKeys(Keys.TAB);
}
public void enterMaleMobileBrigade(String maleMobileBrigade) {
testWebDriver.waitForElementToAppear(maleMobileBrigadeField);
sendKeys(maleMobileBrigadeField, maleMobileBrigade);
maleMobileBrigadeField.sendKeys(Keys.TAB);
}
public void enterData(Integer femaleHealthCenter, Integer femaleMobileBrigade, Integer maleHealthCenter, String maleMobileBrigade) {
enterFemaleHealthCenter(femaleHealthCenter);
enterFemaleMobileBrigade(femaleMobileBrigade);
enterMaleHealthCenter(maleHealthCenter);
enterMaleMobileBrigade(maleMobileBrigade);
}
public void clickApplyNRToAll() {
testWebDriver.waitForElementToAppear(fullCoverageFormApplyNRToAll);
fullCoverageFormApplyNRToAll.click();
clickOkButton();
}
public void toggleApplyNRToMaleHealthCenter() {
testWebDriver.waitForElementToAppear(maleHealthCenterNR);
maleHealthCenterNR.click();
removeFocusFromElement();
}
public void toggleApplyNRToFemaleMobileBrigade() {
testWebDriver.waitForElementToAppear(femaleMobileBrigadeNR);
femaleMobileBrigadeNR.click();
removeFocusFromElement();
}
public void toggleApplyNRToMaleMobileBrigade() {
testWebDriver.waitForElementToAppear(maleMobileBrigadeNR);
maleMobileBrigadeNR.click();
removeFocusFromElement();
}
public String getTextOfFullCoverageHeader() {
testWebDriver.waitForElementToAppear(fullCoverageHeader);
return fullCoverageHeader.getText();
}
public String getTextOfCompletelyVaccinatedHeader() {
testWebDriver.waitForElementToAppear(completeVaccinatedHeader);
return completeVaccinatedHeader.getText();
}
public String getTextOfFemaleHeader() {
testWebDriver.waitForElementToAppear(femaleHeader);
return femaleHeader.getText();
}
public String getTextOfMaleHeader() {
testWebDriver.waitForElementToAppear(maleHeader);
return maleHeader.getText();
}
public String getTextOfHealthCenterHeader() {
testWebDriver.waitForElementToAppear(healthCenterHeader);
return healthCenterHeader.getText();
}
public String getTextOfMobileBrigadeHeader() {
testWebDriver.waitForElementToAppear(mobileBrigadeHeader);
return mobileBrigadeHeader.getText();
}
public boolean getStatusForField(String fieldName) {
WebElement field = fullCoveragePageElements.get(fieldName);
testWebDriver.waitForElementToAppear(field);
return field.isEnabled();
}
public String getValueForField(String fieldName) {
WebElement field = fullCoveragePageElements.get(fieldName);
testWebDriver.waitForElementToAppear(field);
return field.getAttribute("value");
}
private void clickOkButton() {
testWebDriver.waitForElementToAppear(okButton);
okButton.click();
}
@Override
public void removeFocusFromElement() {
testWebDriver.waitForElementToAppear(fullCoverageHeader);
fullCoverageHeader.click();
}
}