package net.thucydides.core.webdriver;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.openqa.selenium.By;
import org.openqa.selenium.ElementNotVisibleException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
/**
* A description goes here.
* User: johnsmart
* Date: 6/02/12
* Time: 10:50 AM
*/
public class WhenUsingADisabledWebDriverFacade {
class DisabledWebDriverFacade extends WebDriverFacade {
DisabledWebDriverFacade(Class<? extends WebDriver> driverClass, WebDriverFactory webDriverFactory) {
super(driverClass, webDriverFactory);
}
@Override
public boolean isEnabled() {
return false;
}
}
@Mock
WebDriverFactory webDriverFactory;
WebDriverFacade webDriverFacade;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
webDriverFacade = new DisabledWebDriverFacade(FirefoxDriver.class, webDriverFactory);
}
@Test
public void should_ignore_get_url() {
webDriverFacade.get("http://some.url");
}
@Test
public void the_current_url_should_be_empty() {
assertThat(webDriverFacade.getCurrentUrl(), is(""));
}
@Test
public void the_title_should_be_empty() {
assertThat(webDriverFacade.getTitle(), is(""));
}
@Test
public void find_elements_should_return_an_empty_list() {
assertThat(webDriverFacade.findElements(By.id("someId")).size(), is(0));
}
@Test(expected = ElementNotVisibleException.class)
public void find_element_should_throw_element_not_visible() {
webDriverFacade.findElement(By.id("someId"));
}
@Test
public void page_source_should_be_empty() {
assertThat(webDriverFacade.getPageSource(), is(""));
}
@Test
public void window_handle_should_be_empty() {
assertThat(webDriverFacade.getWindowHandle(), is(""));
}
@Test
public void window_handles_should_be_empty() {
assertThat(webDriverFacade.getWindowHandles().size(), is(0));
}
@Mock
WebElement frameElement;
@Test
public void switchTo_should_be_ignored() {
webDriverFacade.switchTo().frame("someFrame");
webDriverFacade.switchTo().frame(1);
webDriverFacade.switchTo().frame(frameElement);
webDriverFacade.switchTo().defaultContent();
webDriverFacade.switchTo().window("someWindow");
}
@Test
public void alerts_should_be_ignored() {
webDriverFacade.switchTo().alert().accept();
webDriverFacade.switchTo().alert().dismiss();
assertThat(webDriverFacade.switchTo().alert().getText(), is(""));
webDriverFacade.switchTo().alert().sendKeys("abc");
}
@Test(expected = ElementNotVisibleException.class)
public void switchTo_web_element_should_throw_element_not_visible() {
webDriverFacade.switchTo().activeElement();
}
@Test
public void navigate_should_be_ignored() {
webDriverFacade.navigate().to("http://some.url");
}
@Test
public void manage_should_be_ignored() {
assertThat(webDriverFacade.manage().getCookies().size(), is(0));
}
@Test
public void cookies_should_be_ignored() {
assertThat(webDriverFacade.manage().getCookieNamed("someCookie").getName(), is("someCookie"));
}
@Test
public void manage_timeouts_should_be_ignored() {
webDriverFacade.manage().timeouts().implicitlyWait(100, SECONDS).setScriptTimeout(100, SECONDS);
}
@Test
public void manage_windows_should_be_ignored() {
assertThat(webDriverFacade.manage().window().getPosition(), is(notNullValue()));
assertThat(webDriverFacade.manage().window().getSize(), is(notNullValue()));
}
@Test
public void manage_ime_should_be_ignored() {
webDriverFacade.manage().ime().activateEngine("whatever");
webDriverFacade.manage().ime().deactivate();
assertThat(webDriverFacade.manage().ime().getActiveEngine(), is(""));
assertThat(webDriverFacade.manage().ime().isActivated(), is(false));
assertThat(webDriverFacade.manage().ime().getAvailableEngines().size(), is(0));
assertThat(webDriverFacade.manage().ime().getAvailableEngines().size(), is(0));
}
}