package com.epam.jdi.uitests.testing.unittests.enums;
import com.epam.jdi.uitests.web.selenium.preconditions.IPreconditions;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import java.util.function.Consumer;
import java.util.function.Function;
import static com.epam.jdi.uitests.testing.unittests.entities.User.DEFAULT;
import static com.epam.jdi.uitests.testing.unittests.pageobjects.EpamJDISite.contactFormPage;
import static com.epam.jdi.uitests.testing.unittests.pageobjects.EpamJDISite.dates;
import static com.epam.jdi.uitests.web.WebSettings.getDriver;
import static com.epam.jdi.uitests.web.selenium.preconditions.PreconditionsState.alwaysMoveToCondition;
/**
* Created by 12345 on 03.06.2015.
*/
public enum Preconditions implements IPreconditions {
HOME_PAGE("index.htm"),
CONTACT_PAGE("page1.htm"),
CONTACT_PAGE_FILLED(d -> IPreconditions.checkUrl("page1.htm", d), d -> {
IPreconditions.openUri("page1.htm", d);
contactFormPage.name.newInput(DEFAULT.name);
contactFormPage.lastName.newInput(DEFAULT.lastName);
contactFormPage.description.newInput(DEFAULT.description);
}),
METALS_AND_COLORS_PAGE("page2.htm"),
DATES_PAGE("page4.htm"),
SUPPORT_PAGE("page3.htm", true),
SORTING_TABLE_PAGE("page7.htm"),
DYNAMIC_TABLE_PAGE("page5.htm"),
SIMPLE_PAGE("page6.htm"),
DATES_PAGE_FILLED(d -> IPreconditions.checkUrl("page4.htm", d), d -> {
IPreconditions.openUri("page4.htm", d);
WebElement datePicker = getDriver().findElement(dates.datepicker.getLocator());
datePicker.clear();
datePicker.sendKeys("09/09/1945");
});
public String _htmlPageName;
public Function<WebDriver, Boolean> checkAction;
public Consumer<WebDriver> moveToAction;
Preconditions(Function<WebDriver, Boolean> checkAction, Consumer<WebDriver> moveToAction) {
this.checkAction = checkAction;
this.moveToAction = moveToAction;
alwaysMoveToCondition = true;
}
Preconditions(String uri) {
this(d -> IPreconditions.checkUrl(uri, d), d -> IPreconditions.openUri(uri, d));
_htmlPageName = uri;
}
Preconditions(String uri, boolean isStatic) {
this(uri);
alwaysMoveToCondition = !isStatic;
}
public Function<WebDriver, Boolean> checkAction() {
return checkAction;
}
public Consumer<WebDriver> moveToAction() {
return moveToAction;
}
}