package org.fluentlenium.integration;
import org.fluentlenium.core.domain.FluentList;
import org.fluentlenium.core.domain.FluentWebElement;
import org.fluentlenium.integration.localtest.IntegrationFluentTest;
import org.junit.Test;
import java.util.Collections;
import static org.assertj.core.api.Assertions.assertThat;
public class AxesTest extends IntegrationFluentTest {
@Test
public void checkSearchParentWorks() {
goTo(DEFAULT_URL);
FluentWebElement element = el(".parent > .child");
assertThat(element.axes().parent().attribute("class")).isEqualTo("parent");
}
@Test
public void checkSearchAncestorsWorks() {
goTo(DEFAULT_URL);
FluentWebElement element = el("html > body > .parent > .child");
FluentList<FluentWebElement> ancestors = element.axes().ancestors();
assertThat(ancestors).hasSize(3);
assertThat(ancestors.get(0).tagName()).isEqualTo("html");
assertThat(ancestors.get(1).tagName()).isEqualTo("body");
assertThat(ancestors.get(2).tagName()).isEqualTo("span");
assertThat(ancestors.get(2).attribute("class")).isEqualTo("parent");
}
@Test
public void checkSearchDescendantsWorks() {
goTo(DEFAULT_URL);
FluentWebElement element = el("html");
FluentList<FluentWebElement> descendants = element.axes().descendants();
assertThat(descendants.size()).isGreaterThan(10);
}
@Test
public void checkSearchPrecedingWorks() {
goTo(DEFAULT_URL);
FluentWebElement element = el("#select > option[value='value-2']");
FluentList<FluentWebElement> precedings = element.axes().precedings();
assertThat(precedings.size()).isGreaterThan(2);
Collections.reverse(precedings);
assertThat(precedings.get(0).tagName()).isEqualTo("option");
assertThat(precedings.get(1).tagName()).isEqualTo("span");
}
@Test
public void checkSearchPrecedingSiblingWorks() {
goTo(DEFAULT_URL);
FluentWebElement element = el("#select > option[value='value-2']");
FluentList<FluentWebElement> precedings = element.axes().precedingSiblings();
assertThat(precedings).hasSize(1);
assertThat(precedings.get(0).tagName()).isEqualTo("option");
assertThat(precedings.get(0).attribute("value")).isEqualTo("value-1");
}
@Test
public void checkSearchFollowingWorks() {
goTo(DEFAULT_URL);
FluentWebElement element = el("#select > option[value='value-2']");
FluentList<FluentWebElement> followings = element.axes().followings();
assertThat(followings.size()).isGreaterThan(2);
assertThat(followings.get(0).tagName()).isEqualTo("option");
assertThat(followings.get(1).tagName()).isEqualTo("input");
}
@Test
public void checkSearchFollowingSiblingWorks() {
goTo(DEFAULT_URL);
FluentWebElement element = el("#select > option[value='value-2']");
FluentList<FluentWebElement> followings = element.axes().followingSiblings();
assertThat(followings).hasSize(1);
assertThat(followings.get(0).tagName()).isEqualTo("option");
assertThat(followings.get(0).attribute("value")).isEqualTo("value-3");
}
}