package cucumber.runtime;
import gherkin.formatter.Reporter;
import gherkin.formatter.model.Result;
import gherkin.formatter.model.Scenario;
import gherkin.formatter.model.Tag;
import org.junit.Test;
import java.util.Collections;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class ScenarioResultTest {
private Reporter reporter = mock(Reporter.class);
private ScenarioImpl s = new ScenarioImpl(reporter, Collections.<Tag>emptySet(), mock(Scenario.class));
@Test
public void no_steps_is_passed() throws Exception {
assertEquals("passed", s.getStatus());
}
@Test
public void passed_failed_pending_undefined_skipped_is_failed() throws Exception {
s.add(new Result("passed", 0L, null, null));
s.add(new Result("failed", 0L, null, null));
s.add(new Result("pending", 0L, null, null));
s.add(new Result("undefined", 0L, null, null));
s.add(new Result("skipped", 0L, null, null));
assertEquals("failed", s.getStatus());
}
@Test
public void passed_and_skipped_is_skipped_although_we_cant_have_skipped_without_undefined_or_pending() throws Exception {
s.add(new Result("passed", 0L, null, null));
s.add(new Result("skipped", 0L, null, null));
assertEquals("skipped", s.getStatus());
}
@Test
public void passed_pending_undefined_skipped_is_pending() throws Exception {
s.add(new Result("passed", 0L, null, null));
s.add(new Result("undefined", 0L, null, null));
s.add(new Result("pending", 0L, null, null));
s.add(new Result("skipped", 0L, null, null));
assertEquals("undefined", s.getStatus());
}
@Test
public void passed_undefined_skipped_is_undefined() throws Exception {
s.add(new Result("passed", 0L, null, null));
s.add(new Result("undefined", 0L, null, null));
s.add(new Result("skipped", 0L, null, null));
assertEquals("undefined", s.getStatus());
}
@Test
public void embeds_data() {
byte[] data = new byte[]{1, 2, 3};
s.embed(data, "bytes/foo");
verify(reporter).embedding("bytes/foo", data);
}
@Test
public void prints_output() {
s.write("Hi");
verify(reporter).write("Hi");
}
}