package org.fluentlenium.core.action; import org.fluentlenium.core.domain.FluentWebElement; import org.fluentlenium.core.script.JavascriptControl; 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.Point; import org.openqa.selenium.WebElement; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.function.Supplier; @RunWith(MockitoJUnitRunner.class) public class FluentJavascriptActionsTest { private final Object self = new Object(); @Mock private JavascriptControl javascript; @Mock private FluentWebElement fluentWebElement; @Mock private WebElement element; FluentJavascriptActions actions; @Before public void before() { when(fluentWebElement.getElement()).thenReturn(element); when(fluentWebElement.getElement().getLocation()).thenReturn(new Point(1024, 768)); actions = new FluentJavascriptActionsImpl(self, javascript, new Supplier<FluentWebElement>() { @Override public FluentWebElement get() { return fluentWebElement; } }); } @Test public void testWithNoArgument() { actions.scrollIntoView(); verify(javascript).executeScript("arguments[0].scrollIntoView();", element); } @Test public void testWithArgument() { actions.scrollIntoView(true); verify(javascript).executeScript("arguments[0].scrollIntoView(arguments[1]);", element, true); } @Test public void testToCenter() { actions.scrollToCenter(); verify(javascript).executeScript("window.scrollTo(0,768 - window.innerHeight / 2)"); } }