package org.fluentlenium.core.inject;
import org.assertj.core.api.Assertions;
import org.fluentlenium.adapter.FluentAdapter;
import org.fluentlenium.core.components.ComponentsManager;
import org.fluentlenium.core.domain.FluentWebElement;
import org.fluentlenium.core.proxy.LocatorProxies;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ByIdOrName;
import java.util.Arrays;
import java.util.List;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class FluentInjectorListComponentTest {
@Mock
private WebDriver webDriver;
private FluentAdapter fluentAdapter;
private FluentInjector injector;
@Before
public void before() {
fluentAdapter = new FluentAdapter();
fluentAdapter.initFluent(webDriver);
injector = new FluentInjector(fluentAdapter, null, new ComponentsManager(fluentAdapter),
new DefaultContainerInstanciator(fluentAdapter));
}
public static class Component {
private final WebElement foundElement;
private FluentWebElement element;
public Component(WebElement webElement) {
foundElement = webElement;
}
}
public static class Container {
private List<Component> components;
}
@Test
public void testListComponent() {
Container container = new Container();
WebElement component1 = Mockito.mock(WebElement.class);
WebElement component2 = Mockito.mock(WebElement.class);
WebElement component3 = Mockito.mock(WebElement.class);
when(webDriver.findElements(new ByIdOrName("components"))).thenReturn(Arrays.asList(component1, component2, component3));
injector.inject(container);
Assertions.assertThat(container.components).isNotNull();
Assertions.assertThat(LocatorProxies.loaded(container.components)).isFalse();
for (Component component : container.components) {
Assertions.assertThat(component.element).isNotNull();
}
//verify(webDriver).findElements(new ByIdOrName("components"));
}
}