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.Keys; 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 KeyboardActionsTest { @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 testKeyDown() { KeyboardActions actions = new KeyboardActions(driver); actions.keyDown(Keys.SHIFT); verify(mouse, never()).mouseMove(any(Coordinates.class)); verify(keyboard).pressKey(Keys.SHIFT); } @Test public void testKeyUp() { KeyboardActions actions = new KeyboardActions(driver); actions.keyUp(Keys.SHIFT); verify(mouse, never()).mouseMove(any(Coordinates.class)); verify(keyboard).releaseKey(Keys.SHIFT); } @Test public void testSendKeys() { KeyboardActions actions = new KeyboardActions(driver); actions.sendKeys(Keys.ENTER, Keys.SPACE); verify(mouse, never()).mouseMove(any(Coordinates.class)); verify(keyboard).sendKeys(Keys.ENTER, Keys.SPACE); } @Test public void testBasic() { KeyboardActions actions = new KeyboardActions(driver); Assertions.assertThat(actions.basic()).isSameAs(keyboard); } private abstract static class InputDevicesDriver implements WebDriver, HasInputDevices { // NOPMD AbstractNaming } }