package org.fluentlenium.core.switchto; import org.fluentlenium.core.FluentControl; import org.fluentlenium.core.components.ComponentInstantiator; 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.Alert; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class FluentTargetLocatorTest { private final Object self = new Object(); @Mock private FluentControl control; private ComponentInstantiator instantiator; @Mock private WebDriver.TargetLocator targetLocator; private FluentTargetLocatorImpl fluentTargetLocator; @Before public void before() { instantiator = new DefaultComponentInstantiator(control); fluentTargetLocator = new FluentTargetLocatorImpl<>(self, instantiator, targetLocator); } @Test public void frameIndex() { assertThat(fluentTargetLocator.frame(3)).isSameAs(self); verify(targetLocator).frame(3); } @Test public void frameName() { assertThat(fluentTargetLocator.frame("name")).isSameAs(self); verify(targetLocator).frame("name"); } @Test public void frameElement() { WebElement webElement = mock(WebElement.class); assertThat(fluentTargetLocator.frame(webElement)).isSameAs(self); verify(targetLocator).frame(webElement); } @Test public void frameFluentElement() { FluentWebElement fluentWebElement = mock(FluentWebElement.class); WebElement element = mock(WebElement.class); when(fluentWebElement.getElement()).thenReturn(element); assertThat(fluentTargetLocator.frame(fluentWebElement)).isSameAs(self); verify(targetLocator).frame(element); } @Test public void parentFrame() { assertThat(fluentTargetLocator.parentFrame()).isSameAs(self); verify(targetLocator).parentFrame(); } @Test public void windowName() { assertThat(fluentTargetLocator.window("name")).isSameAs(self); verify(targetLocator).window("name"); } @Test public void defaultContent() { assertThat(fluentTargetLocator.defaultContent()).isSameAs(self); verify(targetLocator).defaultContent(); } @Test public void activeElement() { WebElement element = mock(WebElement.class); when(targetLocator.activeElement()).thenReturn(element); FluentWebElement activeElement = fluentTargetLocator.activeElement(); assertThat(activeElement).isNotNull(); assertThat(activeElement.getElement()).isSameAs(element); } @Test public void alert() { Alert alertMock = mock(Alert.class); when(targetLocator.alert()).thenReturn(alertMock); fluentTargetLocator.alert(); verify(targetLocator).alert(); } }