package de.bechte.junit.runners.context.processing;
import de.bechte.junit.runners.model.TestClassPool;
import de.bechte.junit.stubs.*;
import org.junit.Test;
import org.junit.runners.model.TestClass;
import java.util.List;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
public class ContextResolverTest {
private ContextResolver resolver = new ContextResolver();
@Test
public void whenCalledWithNull_emptyListIsReturned() throws Exception {
List<Class<?>> children = resolver.getChildren(null);
assertThat(children, is(empty()));
}
@Test
public void whenCalledWithEmptyTestClass_emptyListIsReturned() throws Exception {
TestClass testClass = TestClassPool.forClass(EmptyTestClassStub.class);
List<Class<?>> children = resolver.getChildren(testClass);
assertThat(children, is(empty()));
}
@Test
public void verifyThatTestMethodsAreNotContainedInListOfChildren() throws Exception {
TestClass testClass = TestClassPool.forClass(SimpleTestClassStub.class);
List<Class<?>> children = resolver.getChildren(testClass);
assertThat(children, is(empty()));
}
@Test
public void verifyThatSubContextsAreContainedInListOfChildren() throws Exception {
TestClass testClass = TestClassPool.forClass(ContextTestClassStub.class);
List<Class<?>> children = resolver.getChildren(testClass);
assertThat(children, hasSize(2));
assertThat(children, hasItems(ContextTestClassStub.A.class, ContextTestClassStub.B.class));
}
@Test
public void verifyThatOnlyPublicMemberClassesAreContainedInListOfChildren() throws Exception {
TestClass testClass = TestClassPool.forClass(Class1stLevel.class);
List<Class<?>> children = resolver.getChildren(testClass);
assertThat(children, hasSize(1));
assertThat(children, hasItem(Class1stLevel.Class2ndLevel.class));
}
@Test
public void verifyThatInheritedSubContextsAreContainedInListOfChildren() throws Exception {
TestClass testClass = TestClassPool.forClass(InheritedContextTestClassStub.class);
List<Class<?>> children = resolver.getChildren(testClass);
assertThat(children, hasSize(3));
assertThat(children, hasItems(InheritedContextTestClassStub.A.class, InheritedContextTestClassStub.B.class, InheritedContextTestClassStub.I.class));
}
@Test
public void verifyThatIgnoredSubContextsAreNotContainedInListOfChildren() throws Exception {
TestClass testClass = TestClassPool.forClass(ContextTestClassWithIgnoreStub.class);
List<Class<?>> children = resolver.getChildren(testClass);
assertThat(children, hasSize(1));
assertThat(children, hasItem(ContextTestClassWithIgnoreStub.A.class));
}
}