package org.fluentlenium.integration;
import org.fluentlenium.core.FluentControl;
import org.fluentlenium.core.FluentPage;
import org.fluentlenium.core.annotation.Page;
import org.fluentlenium.core.components.ComponentInstantiator;
import org.fluentlenium.core.domain.FluentWebElement;
import org.fluentlenium.integration.localtest.IntegrationFluentTest;
import org.junit.Test;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import static org.assertj.core.api.Assertions.assertThat;
public class InjectionTest extends IntegrationFluentTest {
public static class TestChildComponent extends FluentWebElement {
@FindBy(css = ".parent > .child")
private FluentWebElement element;
public TestChildComponent(WebElement element, FluentControl control, ComponentInstantiator instantiator) {
super(element, control, instantiator);
}
}
public static class TestComponent extends FluentWebElement {
private TestChildComponent childComponent;
@Page
private TestPageOfComponent page;
public TestComponent(WebElement element, FluentControl control, ComponentInstantiator instantiator) {
super(element, control, instantiator);
}
}
public static class TestPage extends FluentPage {
private TestComponent component;
}
public static class TestPageOfComponent extends FluentPage {
private TestChildComponent component;
}
@Page
private TestPage page;
@Test
public void testCapabilities() {
goTo(DEFAULT_URL);
assertThat(page.component.childComponent.element).isNotNull();
assertThat(page.component.page).isNotNull();
assertThat(page.component.page.component.element).isNotNull();
}
}