package net.thucydides.core.annotations; import net.thucydides.core.webdriver.WebDriverFacade; import org.junit.Before; import org.junit.Test; import org.mockito.MockitoAnnotations; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import static org.hamcrest.Matchers.*; import static org.junit.Assert.assertThat; public class WhenReadingManagedDriverAnnotations { static final class SampleTestCase { public void normalTest(){} @Managed WebDriver webDriver; } static final class SampleTestCaseWithNoManagedField { public void normalTest(){} } @Before public void initMock() { MockitoAnnotations.initMocks(this); } @Test public void shouldFindManagedDriverField() { ManagedWebDriverAnnotatedField managedField = ManagedWebDriverAnnotatedField.findFirstAnnotatedField(SampleTestCase.class); assertThat(managedField, is(not(nullValue()))); } @Test (expected = InvalidManagedWebDriverFieldException.class) public void shouldRaiseExceptionIfNoManagedFieldFound() { ManagedWebDriverAnnotatedField.findFirstAnnotatedField(SampleTestCaseWithNoManagedField.class); } static final class SampleTestCaseUsingWebDriverFacade { public void normalTest(){} @Managed WebDriverFacade webDriver; } @Test public void shouldFindManagedDriverFacadeField() { ManagedWebDriverAnnotatedField managedField = ManagedWebDriverAnnotatedField.findFirstAnnotatedField(SampleTestCaseUsingWebDriverFacade.class); assertThat(managedField, is(not(nullValue()))); } static final class SampleTestCaseUsingUniqueSessionWithChrome { public void normalTest(){} @Managed(uniqueSession = true, driver = "chrome") WebDriver webDriver; } @Test public void shouldKnowWhenAUniqueBrowserSessionHasBeenRequested() { ManagedWebDriverAnnotatedField managedField = ManagedWebDriverAnnotatedField.findFirstAnnotatedField(SampleTestCaseUsingUniqueSessionWithChrome.class); assertThat(managedField.isUniqueSession(), is(true)); } @Test public void shouldKnowWhatDriverHasBeenRequested() { ManagedWebDriverAnnotatedField managedField = ManagedWebDriverAnnotatedField.findFirstAnnotatedField(SampleTestCaseUsingUniqueSessionWithChrome.class); assertThat(managedField.getDriver(), is("chrome")); } static final class SampleTestCaseUsingFirefoxWebDriver { public void normalTest(){} @Managed FirefoxDriver webDriver; } @Test (expected = InvalidManagedWebDriverFieldException.class) public void shouldRaiseExceptionIfNotWebDriverOrFacade() { ManagedWebDriverAnnotatedField.findFirstAnnotatedField(SampleTestCaseUsingFirefoxWebDriver.class); } }