package com.netflix.governator.guice.test; import static org.junit.Assert.assertTrue; import org.junit.Test; import com.google.inject.AbstractModule; import com.netflix.governator.guice.test.AnnotationBasedTestInjectorManager; import com.netflix.governator.guice.test.ModulesForTesting; import com.netflix.governator.guice.test.mocks.MockHandler; public class AnnotationBasedTestInjectionManagerTest { @Test(expected=RuntimeException.class) public void testExceptionThrownWhenModuleWithNoDefaultConstructorProvided() { new AnnotationBasedTestInjectorManager(TestClassForModulesWithoutDefaultConstrutor.class, TestDefaultdMockHandler.class); } @Test public void testMockHandlerSelection() { AnnotationBasedTestInjectorManager annotationBasedTestInjectorManager = new AnnotationBasedTestInjectorManager(ParentTest.class, TestDefaultdMockHandler.class); assertTrue(annotationBasedTestInjectorManager.getMockHandler() instanceof TestParentMockHandler); } @Test public void testMockHandlerOverridenByChild() { AnnotationBasedTestInjectorManager annotationBasedTestInjectorManager = new AnnotationBasedTestInjectorManager(ChildTest.class, TestDefaultdMockHandler.class); assertTrue(annotationBasedTestInjectorManager.getMockHandler() instanceof TestChildMockHandler); } @Test public void testMockHandlerInheritence() { AnnotationBasedTestInjectorManager annotationBasedTestInjectorManager = new AnnotationBasedTestInjectorManager(InheritectMockHandlerTest.class, TestDefaultdMockHandler.class); assertTrue(annotationBasedTestInjectorManager.getMockHandler() instanceof TestParentMockHandler); } } @ModulesForTesting(ModuleWithoutDefaultConstructor.class) class TestClassForModulesWithoutDefaultConstrutor { } class ModuleWithoutDefaultConstructor extends AbstractModule { public ModuleWithoutDefaultConstructor(String someArg) {} @Override protected void configure() {} } @ModulesForTesting(mockHandler=TestParentMockHandler.class) class ParentTest { } @ModulesForTesting(mockHandler=TestChildMockHandler.class) class ChildTest extends ParentTest { } @ModulesForTesting class InheritectMockHandlerTest extends ParentTest { } class TestDefaultdMockHandler implements MockHandler { public <T> T createMock(Class<T> classToMock) { return null; } public <T> T createMock(Class<T> classToMock, Object args) { return null; } public <T> T createSpy(T objectToSpy) { return null; } public void resetMock(Object mockToReset) {} } class TestChildMockHandler implements MockHandler { public <T> T createMock(Class<T> classToMock) { return null; } public <T> T createMock(Class<T> classToMock, Object args) { return null; } public <T> T createSpy(T objectToSpy) { return null; } public void resetMock(Object mockToReset) {} } class TestParentMockHandler implements MockHandler { public <T> T createMock(Class<T> classToMock) { return null; } public <T> T createMock(Class<T> classToMock, Object args) { return null; } public <T> T createSpy(T objectToSpy) { return null; } public void resetMock(Object mockToReset) {} }