package org.fluentlenium.core.domain; import org.fluentlenium.core.script.FluentJavascript; import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import java.util.Collections; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class FluentJavascriptTest { @Mock private JavascriptWebDriver driver; @After public void after() { reset(driver); } @Test public void testSync() { String scriptRet = "value"; when(driver.executeScript("script", "arg1", "arg2")).thenReturn(scriptRet); FluentJavascript fluentJavascript = new FluentJavascript(driver, false, "script", "arg1", "arg2"); assertThat(fluentJavascript.isStringResult()).isTrue(); assertThat(fluentJavascript.getStringResult()).isEqualTo(scriptRet); assertThat(fluentJavascript.getResult()).isEqualTo(scriptRet); Boolean booleanRet = true; when(driver.executeScript("script", "arg1", "arg2")).thenReturn(booleanRet); fluentJavascript = new FluentJavascript(driver, false, "script", "arg1", "arg2"); assertThat(fluentJavascript.getBooleanResult()).isEqualTo(booleanRet); assertThat(fluentJavascript.isBooleanResult()).isTrue(); Long longRet = 1L; when(driver.executeScript("script", "arg1", "arg2")).thenReturn(longRet); fluentJavascript = new FluentJavascript(driver, false, "script", "arg1", "arg2"); assertThat(fluentJavascript.getLongResult()).isEqualTo(longRet); assertThat(fluentJavascript.isLongResult()).isTrue(); Double doubleRet = 1.5; when(driver.executeScript("script", "arg1", "arg2")).thenReturn(doubleRet); fluentJavascript = new FluentJavascript(driver, false, "script", "arg1", "arg2"); assertThat(fluentJavascript.getDoubleResult()).isEqualTo(doubleRet); assertThat(fluentJavascript.isDoubleResult()).isTrue(); List<String> listRet = Collections.emptyList(); when(driver.executeScript("script", "arg1", "arg2")).thenReturn(listRet); fluentJavascript = new FluentJavascript(driver, false, "script", "arg1", "arg2"); assertThat(fluentJavascript.getListResult()).isEqualTo(listRet); assertThat(fluentJavascript.getListResult(String.class)).isEqualTo(listRet); assertThat(fluentJavascript.isListResult()).isTrue(); } @Test public void testAsync() { String scriptRet = "value"; when(driver.executeAsyncScript("script", "arg1", "arg2")).thenReturn(scriptRet); FluentJavascript fluentJavascript = new FluentJavascript(driver, true, "script", "arg1", "arg2"); assertThat(fluentJavascript.getStringResult()).isEqualTo(scriptRet); assertThat(fluentJavascript.getResult()).isEqualTo(scriptRet); } private abstract static class JavascriptWebDriver implements WebDriver, JavascriptExecutor { // NOPMD AbstractNaming } }