package org.fluentlenium.core.hook; import org.fluentlenium.adapter.FluentAdapter; import org.fluentlenium.core.components.DefaultComponentInstantiator; import org.fluentlenium.core.domain.FluentWebElement; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.pagefactory.ElementLocator; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @RunWith(MockitoJUnitRunner.class) public class BaseFluentHookTest { @Mock private WebDriver webDriver; @Mock private WebElement element; @Mock private ElementLocator locator; @Mock private Object options; private DefaultComponentInstantiator instantiator; private BaseFluentHook<?> hook; private FluentAdapter fluentAdapter; @Before public void before() { fluentAdapter = new FluentAdapter(); fluentAdapter.initFluent(webDriver); instantiator = spy(new DefaultComponentInstantiator(fluentAdapter)); hook = new BaseFluentHook<>(fluentAdapter, instantiator, () -> element, () -> locator, () -> "toString", options); } @Test public void testFluentWebElement() { FluentWebElement fluentWebElement = hook.getFluentWebElement(); verify(instantiator).newComponent(FluentWebElement.class, element); assertThat(fluentWebElement).isInstanceOf(FluentWebElement.class); assertThat(fluentWebElement.getElement()).isSameAs(element); assertThat(hook.toString()).isEqualTo("toString"); } }