package com.epam.jdi.uitests.testing.unittests.tests.common;
import com.epam.jdi.uitests.core.interfaces.common.IText;
import com.epam.jdi.uitests.testing.unittests.InitTests;
import com.epam.jdi.uitests.testing.unittests.enums.Preconditions;
import com.epam.jdi.uitests.testing.unittests.tests.complex.CommonActionsData;
import com.epam.jdi.uitests.web.selenium.elements.base.Element;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
import java.util.function.Supplier;
import static com.epam.jdi.uitests.core.settings.JDISettings.logger;
import static com.epam.jdi.uitests.testing.unittests.enums.Preconditions.HOME_PAGE;
import static com.epam.jdi.uitests.testing.unittests.enums.Preconditions.SUPPORT_PAGE;
import static com.epam.jdi.uitests.testing.unittests.pageobjects.EpamJDISite.homePage;
import static com.epam.jdi.uitests.testing.unittests.tests.complex.CommonActionsData.runParallel;
import static com.epam.jdi.uitests.testing.unittests.tests.complex.CommonActionsData.waitTimeOut;
import static com.epam.jdi.uitests.web.selenium.preconditions.PreconditionsState.isInState;
import static com.epam.web.matcher.testng.Assert.areEquals;
import static com.epam.web.matcher.testng.Assert.isTrue;
import static java.lang.String.*;
public class TextTests extends InitTests {
private String elementType = "Text";
private Preconditions page = HOME_PAGE;
private Supplier<IText> textItem = () -> homePage.text;
private String expectedText = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit,"
+ " sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
+ " Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris"
+ " nisi ut aliquip ex ea commodo consequat Duis aute irure dolor in"
+ " reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.").toUpperCase();
private String contains = "ENIM AD MINIM VENIAM, QUIS NOSTRUD";
private String regEx = ".* IPSUM DOLOR SIT AMET.*";
public TextTests() {
}
public TextTests(String elementType, Preconditions page, Supplier<IText> textItem, String expectedText, String contains, String regEx) {
this.elementType = elementType;
this.page = page;
this.textItem = textItem;
this.expectedText = expectedText;
this.contains = contains;
this.regEx = regEx;
}
@BeforeMethod
public void before(final Method method) {
logger.info(format("=== Start test %s for %s ===", method.getName(), elementType));
isInState(page, method);
}
@Test
public void getTextTest() {
areEquals(textItem.get().getText(), expectedText);
}
@Test
public void getValueTest() throws Exception {
areEquals(textItem.get()::getValue, expectedText);
}
@Test
public void waitMatchText() {
areEquals(textItem.get().waitMatchText(regEx), expectedText);
}
@Test
public void waitMatchTextParallel() {
isInState(SUPPORT_PAGE);
runParallel(page::open);
areEquals(textItem.get().waitMatchText(regEx), expectedText);
isTrue(timer.timePassedInMSec() > waitTimeOut);
}
@Test
public void waitText() {
areEquals(textItem.get().waitText(contains), expectedText);
}
@Test
public void waitTextParallel() {
isInState(SUPPORT_PAGE);
runParallel(page::open);
areEquals(textItem.get().waitText(contains), expectedText);
isTrue(timer.timePassedInMSec() > waitTimeOut);
}
@Test
public void setAttributeTest() {
String _attributeName = "testAttr";
String _value = "testValue";
textItem.get().setAttribute(_attributeName, _value);
CommonActionsData.checkText(() -> ((Element)textItem.get()).getWebElement().getAttribute(_attributeName), _value);
}
}