package net.thucydides.core.steps;
import net.thucydides.core.annotations.Step;
import net.thucydides.core.pages.Pages;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.openqa.selenium.WebDriver;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.mockito.Mockito.when;
public class WhenOrganizingTestStepsInAScenario {
class SimpleTestScenarioSteps extends ScenarioSteps {
public SimpleTestScenarioSteps(Pages pages) {
super(pages);
}
@Step
public void step1(){}
@Step
public void step2(){}
@Step
public void step3(){}
}
@Mock
Pages pages;
@Mock
WebDriver driver;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
when(pages.getDriver()).thenReturn(driver);
}
@Test
public void a_scenario_steps_library_uses_a_Pages_library() {
SimpleTestScenarioSteps steps = new SimpleTestScenarioSteps(pages);
assertThat(steps.getPages(), is(pages));
}
@Test
public void the_pages_method_can_also_be_used_to_obtain_the_Pages_library() {
SimpleTestScenarioSteps steps = new SimpleTestScenarioSteps(pages);
assertThat(steps.pages(), is(pages));
}
@Test
public void onPage_can_be_used_as_a_shorthand_for_getPages() {
SimpleTestScenarioSteps steps = new SimpleTestScenarioSteps(pages);
assertThat(steps.onPage(), is(pages));
}
@Test
public void a_user_runs_the_tests_by_calling_the_step_methos() {
SimpleTestScenarioSteps steps = new SimpleTestScenarioSteps(pages);
steps.step1();
steps.step2();
steps.step3();
}
@Test
public void a_scenario_steps_library_can_provide_the_supporting_web_driver() {
SimpleTestScenarioSteps steps = new SimpleTestScenarioSteps(pages);
assertThat(steps.getDriver(), is(driver));
}
}