package org.syftkog.web.test.framework; import org.testng.Assert; /** * * @author BenjaminLimb * @param <T> */ public class ElementAssertions<T extends Element> { /** * The time to retry an action before timing out. */ public static final long IMPLICIT_WAIT_TIME_IN_SECONDS = Long.parseLong(PropertiesRetriever.getString("element.implicitWaitTimeInSeconds", "10")); private final T el; /** * * @param el - An Element */ public ElementAssertions(T el) { this.el = el; } /** * * @param <E> * @param el * @return */ public static <E extends Element> ElementAssertions that(E el) { return new ElementAssertions<>(el); } /** * * @return */ public T isEnabled() { el.logStep("ASSERT: " + el.toString() + " is enabled."); ElementWaits.until(el).isEnabled(IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @return */ public T isNotEnabled() { el.logStep("ASSERT: " + el.toString() + " is not enabled."); ElementWaits.until(el).isNotEnabled(IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @param number * @return */ public T isGreaterThan(Long number) { el.logStep("ASSERT: " + el.toString() + " is greater than [" + number +"]"); ElementWaits.until(el).isGreaterThan(number,IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @param number * @return */ public T isLessThan(Long number) { el.logStep("ASSERT: " + el.toString() + " is less than [" + number + "] Actual:" + el.getNumberAsLong()); ElementWaits.until(el).isLessThan(number,IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @param expectedText * @return */ public T containsText(String expectedText) { el.logStep("ASSERT: " + el.toString() + " contains [" + expectedText + "]"); ElementWaits.until(el).containsText(expectedText, IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @param expectedText * @return */ public T doesNotContainText(String expectedText) { el.logStep("ASSERT: " + el.toString() + " does not contain [" + expectedText + "]"); ElementWaits.until(el).doesNotContainsText(expectedText, IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } //TODO: make a more meainingful error message. /** * * @param expectedText * @return */ public T equals(String expectedText) { el.logStep("ASSERT: " + el.toString() + " equals [" + expectedText + "]"); ElementWaits.until(el).isEqualTo(expectedText, IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @param expectedText * @return */ public T doesNotEqual(String expectedText) { el.logStep("ASSERT: " + el.toString() + " equals [" + expectedText + "]"); ElementWaits.until(el).isNotEqualTo(expectedText, IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @return */ public T isSelected() { el.logStep("ASSERT: " + el.toString() + " is selected."); ElementWaits.until(el).isSelected(IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @return */ public T isNotSelected() { el.logStep("ASSERT: " + el.toString() + " is not selected."); ElementWaits.until(el).isNotSelected(IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @param booleanValue * @return */ public T selectedStateIs(boolean booleanValue) { el.logStep("ASSERT: " + el.toString() + " selected state is " + booleanValue + "."); if (booleanValue) { ElementWaits.until(el).isSelected(IMPLICIT_WAIT_TIME_IN_SECONDS); } else { ElementWaits.until(el).isNotSelected(IMPLICIT_WAIT_TIME_IN_SECONDS); } return el; } //TODO: make a more meaningful error message. /** * * @return */ public T isDisplayed() { el.logStep("ASSERT: " + el.toString() + " is displayed."); ElementWaits.until(el).isDisplayed(IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } //TODO: catch not found Exceptions!!!!!!!!!!! /** * * @return */ public T isNotDisplayed() { el.logStep("ASSERT: " + el.toString() + " is not displayed."); ElementWaits.until(el).isNotDisplayed(IMPLICIT_WAIT_TIME_IN_SECONDS); return el; } /** * * @param selectedValue * @return */ public T selectboxEqualsValue(String selectedValue) { el.logStep("ASSERT: " + el.toString() + " Selectbox value."); String actualValue = el.getSelectboxValue(); Assert.assertEquals(actualValue, selectedValue); return el; } /** * * @return */ public T srcAttributeReturnsValidResponse() { el.logStep("ASSERT: " + el.toString() + " src attribute returns valid response."); String src = el.getAttribute("src"); int responseCode = GeneralUtils.getResponseCode(src); Assert.assertTrue(responseCode < 400, "Expected < 400. Response was " + responseCode); return el; } /** * DO NOT USE * @deprecated * @param obj * @return */ @Override public boolean equals(Object obj){ throw new RuntimeException("This method is not supported."); } }