package org.fluentlenium.integration;
import org.fluentlenium.integration.localtest.IntegrationFluentTest;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.fluentlenium.core.filter.FilterConstructor.with;
import static org.fluentlenium.core.filter.FilterConstructor.withClass;
import static org.fluentlenium.core.filter.FilterConstructor.withId;
import static org.fluentlenium.core.filter.FilterConstructor.withName;
import static org.fluentlenium.core.filter.FilterConstructor.withPredicate;
import static org.fluentlenium.core.filter.MatcherConstructor.regex;
public class FluentSelectorTest extends IntegrationFluentTest {
@Test
public void checkWithNameCssSelector() {
goTo(DEFAULT_URL);
assertThat($(".small", withName("name"))).hasSize(1);
}
@Test
public void checkWithIdCssSelector() {
goTo(DEFAULT_URL);
assertThat($(".small", withId("id"))).hasSize(1);
}
@Test
public void checkWithNameMatcherCssPatternSelector() {
goTo(DEFAULT_URL);
assertThat($(".small", withName().contains(regex("na?me[0-9]*"))).names()).contains("name", "name2");
}
@Test
public void checkWithNameMatcherCssNotContainPatternSelector() {
goTo(DEFAULT_URL);
assertThat($(".small", withName().notContains(regex("na?me[0-9]*"))).names()).hasSize(1);
}
@Test
public void checkWithNameEqualMatcherCssSelector() {
goTo(DEFAULT_URL);
assertThat($(".small", withName().equalTo("name"))).hasSize(1);
}
@Test
public void checkWithNameMatcherNotContainsCssSelector() {
goTo(DEFAULT_URL);
assertThat($(".small", withName().notContains("toto"))).hasSize(3);
}
@Test
public void checkCustomSelectAttribute() {
goTo(DEFAULT_URL);
assertThat($("span", with("generated").equalTo("true")).texts()).contains("Test custom attribute");
}
@Test
public void checkCustomSelectAttributeWithRegex() {
goTo(DEFAULT_URL);
assertThat($("span", with("generated").contains(regex("t?ru?"))).texts()).contains("Test custom attribute");
}
@Test
public void checkCustomSelectAttributeIfText() {
goTo(DEFAULT_URL);
assertThat($("span", with("TEXT").equalTo("Pharmacy")).first().tagName()).isEqualTo("span");
}
@Test
public void checkCustomSelectAttributeIfTextIsInLowerCase() {
goTo(DEFAULT_URL);
assertThat($("span", with("text").equalTo("Pharmacy")).first().tagName()).isEqualTo("span");
}
@Test
public void checkStartAttributeMatcher() {
goTo(DEFAULT_URL);
assertThat($("span", withName().startsWith(regex("na?"))).first().tagName()).isEqualTo("span");
}
@Test
public void checkStartAttributeMatcherNotFind() {
goTo(DEFAULT_URL);
assertThat($("span", withName().startsWith(regex("am")))).hasSize(0);
}
@Test
public void checkEndAttributeMatcher() {
goTo(DEFAULT_URL);
assertThat($("span", withName().endsWith(regex("na[me]*"))).first().tagName()).isEqualTo("span");
}
@Test
public void checkEndAttributeMatcherNotFind() {
goTo(DEFAULT_URL);
assertThat($("span", withName().endsWith(regex("am?")))).hasSize(0);
}
@Test
public void checkNotStartAttribute() {
goTo(DEFAULT_URL);
assertThat($("span", withName().notStartsWith("na")).ids()).contains("oneline");
}
@Test
public void checkPredicate() {
goTo(DEFAULT_URL);
assertThat(
$("span", withPredicate(input -> input.id() != null && !input.id().startsWith("na"))).ids().contains("oneline"));
}
@Test
public void checkNotStartAttributeMatcher() {
goTo(DEFAULT_URL);
assertThat($("span", withName().notStartsWith(regex("na?"))).first().id()).isEqualTo("oneline");
}
@Test
public void checkNotEndStartAttribute() {
goTo(DEFAULT_URL);
assertThat($("span", withName().notEndsWith("na")).first().id()).isEqualTo("oneline");
}
@Test
public void checkNotEndAttributeMatcher() {
goTo(DEFAULT_URL);
assertThat($("span", withName().notEndsWith(regex("na?"))).first().id()).isEqualTo("oneline");
}
@Test
public void checkWithClassCssSelector() {
goTo(DEFAULT_URL);
assertThat($("#id", withClass("small"))).hasSize(1);
}
@Test
public void checkWithClassEqualMatcherCssSelector() {
goTo(DEFAULT_URL);
assertThat($("#id", withClass().equalTo("small"))).hasSize(1);
}
@Test
public void checkWithClassRegexMatcherCssSelector() {
goTo(DEFAULT_URL);
assertThat($("#id", withClass().contains(regex("smal?")))).hasSize(1);
}
@Test
public void checkMultipleClass2Selector() {
goTo(DEFAULT_URL);
assertThat($("button", withClass().equalTo("class1 class2 class3"))).hasSize(1);
}
@Test
public void checkMultipleClassContainsWordsSelector() {
goTo(DEFAULT_URL);
assertThat($("button", withClass().containsWord("class1"), withClass().containsWord("class2"))).hasSize(1);
}
@Test
public void checkClassContainsSelector() {
goTo(DEFAULT_URL);
assertThat($("button", withClass().contains("class"), withClass().containsWord("class2"))).hasSize(1);
}
@Test
public void checkClassContainsWordSelector() {
goTo(DEFAULT_URL);
assertThat($("button", withClass().containsWord("class"))).hasSize(0);
}
}