package me.moodcat.backend; import me.moodcat.backend.rooms.RoomInstanceFactory; import me.moodcat.backend.rooms.SongInstanceFactory; import me.moodcat.database.DatabaseTestModule; import org.eclipse.jetty.util.component.AbstractLifeCycle; import org.eclipse.jetty.util.component.LifeCycle; import org.jukito.JukitoRunner; import org.jukito.UseModules; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import com.google.inject.AbstractModule; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.assistedinject.FactoryModuleBuilder; import com.google.inject.name.Names; /** * Created by jwgmeligmeyling on 9-6-15. */ @RunWith(JukitoRunner.class) @UseModules(InjectionTest.TestModule.class) public class InjectionTest { private static LifeCycle lifeCycle = new AbstractLifeCycle() { @Override protected void doStart() throws Exception { super.doStart(); } }; @BeforeClass public static void beforeClass() throws Exception { lifeCycle.start(); } @AfterClass public static void afterClass() throws Exception { lifeCycle.stop(); } public static class TestModule extends AbstractModule { @Override protected void configure() { this.install(new DatabaseTestModule()); this.bindConstant().annotatedWith(Names.named("thread.pool.size")).to(4); this.bind(LifeCycle.class).toInstance(lifeCycle); install(new FactoryModuleBuilder() .build(SongInstanceFactory.class)); install(new FactoryModuleBuilder() .build(RoomInstanceFactory.class)); this.bind(UnitOfWorkSchedulingServiceImpl.class).asEagerSingleton(); } } @Inject private Injector injector; @Test public void testRoomInstanceFactory() { RoomInstanceFactory songInstanceFactory = injector.getInstance(RoomInstanceFactory.class); Assert.assertNotNull(songInstanceFactory); } @Test public void testSongInstanceFactory() { SongInstanceFactory songInstanceFactory = injector.getInstance(SongInstanceFactory.class); Assert.assertNotNull(songInstanceFactory); } @Test public void testBindUOWSChedulingService(){ UnitOfWorkSchedulingService songInstanceFactory = injector.getInstance(UnitOfWorkSchedulingServiceImpl.class); Assert.assertNotNull(songInstanceFactory); } }