package net.thucydides.core.steps;
import net.thucydides.core.pages.PageObject;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.pages.SystemClock;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.openqa.selenium.WebDriver;
import static org.mockito.Mockito.verify;
public class WhenPausingTestExecution {
@Mock
SystemClock clock;
@Mock
Pages pages;
@Mock
WebDriver driver;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void should_pause_test_execution_for_a_millisecond() {
StepDelayer delayer = new StepDelayer(clock);
delayer.waitFor(1).millisecond();
verify(clock).pauseFor(1);
}
@Test
public void should_pause_test_execution_for_a_specified_number_of_milliseconds() {
StepDelayer delayer = new StepDelayer(clock);
delayer.waitFor(2).milliseconds();
verify(clock).pauseFor(2);
}
@Test
public void should_pause_test_execution_for_a_minute() {
StepDelayer delayer = new StepDelayer(clock);
delayer.waitFor(1).minute();
verify(clock).pauseFor(60000);
}
@Test
public void should_pause_test_execution_for_a_specified_number_of_minutes() {
StepDelayer delayer = new StepDelayer(clock);
delayer.waitFor(2).minutes();
verify(clock).pauseFor(120000);
}
@Test
public void should_pause_test_execution_for_a_second() {
StepDelayer delayer = new StepDelayer(clock);
delayer.waitFor(1).second();
verify(clock).pauseFor(1000);
}
@Test
public void should_pause_test_execution_for_a_specified_number_of_seconds() {
StepDelayer delayer = new StepDelayer(clock);
delayer.waitFor(2).seconds();
verify(clock).pauseFor(2000);
}
@Test
public void should_pause_test_execution_for_an_hour() {
StepDelayer delayer = new StepDelayer(clock);
delayer.waitFor(1).hour();
verify(clock).pauseFor(1000 * 60 * 60);
}
@Test
public void should_pause_test_execution_for_a_specified_number_of_hourss() {
StepDelayer delayer = new StepDelayer(clock);
delayer.waitFor(2).hours();
verify(clock).pauseFor(2 * 1000 * 60 * 60);
}
class PausedScenario extends ScenarioSteps {
PausedScenario(Pages pages) {
super(pages);
}
}
@Test
public void should_pause_step_execution() {
PausedScenario scenario = new PausedScenario(pages);
scenario.waitFor(2).milliseconds();
}
class PausedPageObject extends PageObject {
PausedPageObject(WebDriver driver) {
super(driver);
}
}
@Test
public void should_pause_page_execution() {
PausedPageObject page = new PausedPageObject(driver);
page.waitFor(2).milliseconds();
}
}