package org.fluentlenium.core.action; import org.assertj.core.api.Assertions; import org.junit.After; 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.interactions.HasInputDevices; import org.openqa.selenium.interactions.Keyboard; import org.openqa.selenium.interactions.Mouse; import org.openqa.selenium.interactions.internal.Coordinates; import static org.mockito.Matchers.any; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class MouseActionsTest { @Mock private Keyboard keyboard; @Mock private Mouse mouse; @Mock private InputDevicesDriver driver; @Before public void before() { when(driver.getKeyboard()).thenReturn(keyboard); when(driver.getMouse()).thenReturn(mouse); } @After public void after() { reset(driver, keyboard, mouse); } @Test public void testClickAndHold() { MouseActions actions = new MouseActions(driver); actions.clickAndHold(); verify(mouse, never()).mouseMove(any(Coordinates.class)); verify(mouse).mouseDown(any()); } @Test public void testClick() { MouseActions actions = new MouseActions(driver); actions.click(); verify(mouse, never()).mouseMove(any(Coordinates.class)); verify(mouse).click(any()); } @Test public void testContextClick() { MouseActions actions = new MouseActions(driver); actions.contextClick(); verify(mouse, never()).mouseMove(any(Coordinates.class)); verify(mouse).contextClick(any()); } @Test public void testDoubleClick() { MouseActions actions = new MouseActions(driver); actions.doubleClick(); verify(mouse, never()).mouseMove(any(Coordinates.class)); verify(mouse).doubleClick(any()); } @Test public void testRelease() { MouseActions actions = new MouseActions(driver); actions.release(); verify(mouse, never()).mouseMove(any(Coordinates.class)); verify(mouse).mouseUp(any()); } @Test public void testBasic() { MouseActions actions = new MouseActions(driver); Assertions.assertThat(actions.basic()).isSameAs(mouse); } private abstract static class InputDevicesDriver implements WebDriver, HasInputDevices { // NOPMD AbstractNaming } }