package ru.yandex.qatools.allure.events;
import org.junit.Before;
import org.junit.Test;
import ru.yandex.qatools.allure.model.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyLong;
import static org.mockito.Mockito.*;
/**
* @author Dmitry Baev charlie@yandex-team.ru
* Date: 14.12.13
*/
public class TestCaseEventTest {
private TestCaseResult testCase;
@Before
public void setUp() throws Exception {
testCase = spy(new TestCaseResult());
}
@Test
public void testCaseStartedEvent() throws Exception {
new TestCaseStartedEvent("suite.uid", "name").process(testCase);
verify(testCase).setName("name");
verify(testCase).setTitle(null);
verify(testCase).setDescription(null);
verify(testCase).setLabels(Collections.<Label>emptyList());
verify(testCase).setStart(anyLong());
verify(testCase).setStatus(Status.PASSED);
verifyNoMoreInteractions(testCase);
}
@Test
public void testCaseStartedEventTitle() throws Exception {
new TestCaseStartedEvent("suite.uid", "name").withTitle("some.title").process(testCase);
verify(testCase).setName("name");
verify(testCase).setTitle("some.title");
verify(testCase).setDescription(null);
verify(testCase).setLabels(Collections.<Label>emptyList());
verify(testCase).setStart(anyLong());
verify(testCase).setStatus(Status.PASSED);
verifyNoMoreInteractions(testCase);
}
@Test
public void testCaseStartedEventDescription() throws Exception {
Description description = new Description()
.withValue("some.description")
.withType(DescriptionType.MARKDOWN);
new TestCaseStartedEvent("suite.uid", "name").withDescription(description).process(testCase);
verify(testCase).setName("name");
verify(testCase).setTitle(null);
verify(testCase).setDescription(description);
verify(testCase).setLabels(Collections.<Label>emptyList());
verify(testCase).setStart(anyLong());
verify(testCase).setStatus(Status.PASSED);
verifyNoMoreInteractions(testCase);
}
@Test
public void testCaseStartedEventLabels() throws Exception {
Label label = new Label().withName("label.name").withValue("label.value");
new TestCaseStartedEvent("suite.uid", "name").withLabels(label).process(testCase);
verify(testCase).setName("name");
verify(testCase).setTitle(null);
verify(testCase).setDescription(null);
verify(testCase).setLabels(Arrays.asList(label));
verify(testCase).setStart(anyLong());
verify(testCase).setStatus(Status.PASSED);
verifyNoMoreInteractions(testCase);
}
@Test
public void testCaseFinishedEvent() throws Exception {
new TestCaseFinishedEvent().process(testCase);
verify(testCase).setStop(anyLong());
verifyNoMoreInteractions(testCase);
}
@Test
public void testCaseCanceledEvent() throws Exception {
Throwable throwable = new Exception("atata");
new TestCaseCanceledEvent().withThrowable(throwable).process(testCase);
verify(testCase).setFailure(any(Failure.class));
verify(testCase).setStatus(Status.CANCELED);
verifyNoMoreInteractions(testCase);
}
@Test
public void testCaseCanceledEventWithNullFailure() throws Exception {
new TestCaseCanceledEvent().withThrowable(null).process(testCase);
verify(testCase).setFailure(any(Failure.class));
verify(testCase).setStatus(Status.CANCELED);
verifyNoMoreInteractions(testCase);
}
@Test
public void testCaseFailureEventFailed() throws Exception {
Throwable throwable = new AssertionError("atata");
new TestCaseFailureEvent().withThrowable(throwable).process(testCase);
verify(testCase).setFailure(any(Failure.class));
verify(testCase).setStatus(Status.FAILED);
verifyNoMoreInteractions(testCase);
}
@Test
public void testCaseFailureEventBroken() throws Exception {
Throwable throwable = new Exception("atata");
new TestCaseFailureEvent().withThrowable(throwable).process(testCase);
verify(testCase).setFailure(any(Failure.class));
verify(testCase).setStatus(Status.BROKEN);
verifyNoMoreInteractions(testCase);
}
@Test
public void testCaseFailureEventBrokenWithNullFailure() throws Exception {
new TestCaseFailureEvent().withThrowable(null).process(testCase);
verify(testCase).setFailure(any(Failure.class));
verify(testCase).setStatus(Status.BROKEN);
verifyNoMoreInteractions(testCase);
}
@SuppressWarnings("unchecked")
@Test
public void testCaseAddParameterTest() throws Exception {
List parameters = mock(List.class);
doReturn(parameters).when(testCase).getParameters();
new AddParameterEvent("some-name", "some-value").process(testCase);
verify(testCase).getParameters();
verify(parameters).add(any(Parameter.class));
verifyNoMoreInteractions(parameters);
verifyNoMoreInteractions(testCase);
}
@Test
public void testCasePendingEventTest() throws Exception {
Throwable throwable = new Exception("atata");
new TestCasePendingEvent().withThrowable(throwable).process(testCase);
verify(testCase).setStatus(Status.PENDING);
verify(testCase).setFailure(any(Failure.class));
verifyNoMoreInteractions(testCase);
}
}