package org.jooby.internal.hbm; import static org.easymock.EasyMock.expect; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.inject.spi.AnnotatedType; import javax.enterprise.inject.spi.BeanManager; import javax.enterprise.inject.spi.InjectionTarget; import org.jooby.Registry; import org.jooby.test.MockUnit; import org.junit.Test; import javaslang.concurrent.Future; import javaslang.concurrent.Promise; public class GuiceBeanManagerTest { public static class Listener { } @SuppressWarnings({"unchecked", "rawtypes" }) @Test public void beanManager() throws Exception { new GuiceBeanManager(); Listener value = new Listener(); new MockUnit(Promise.class, Registry.class) .expect(unit -> { Registry registry = unit.get(Registry.class); expect(registry.require(Listener.class)).andReturn(value); Future future = unit.mock(Future.class); expect(future.get()).andReturn(registry); expect(unit.get(Promise.class).future()).andReturn(future); }) .run(unit -> { BeanManager bm = GuiceBeanManager.beanManager(unit.get(Promise.class)); AnnotatedType<Listener> type = bm.createAnnotatedType(Listener.class); assertNotNull(type); InjectionTarget<Listener> injectionTarget = bm.createInjectionTarget(type); CreationalContext<Listener> ctx = bm.createCreationalContext(null); assertEquals(value, injectionTarget.produce(ctx)); injectionTarget.inject(value, ctx); injectionTarget.postConstruct(value); injectionTarget.preDestroy(value); injectionTarget.dispose(value); ctx.release(); }); } @Test(expected = UnsupportedOperationException.class) public void bmUOE() throws Exception { BeanManager bm = GuiceBeanManager.beanManager(null); bm.getELResolver(); } @Test(expected = UnsupportedOperationException.class) public void atUOE() throws Exception { BeanManager bm = GuiceBeanManager.beanManager(null); AnnotatedType<Listener> type = bm.createAnnotatedType(Listener.class); type.getBaseType(); } @Test(expected = UnsupportedOperationException.class) public void itUOE() throws Exception { BeanManager bm = GuiceBeanManager.beanManager(null); AnnotatedType<Listener> type = bm.createAnnotatedType(Listener.class); InjectionTarget<Listener> injectionTarget = bm.createInjectionTarget(type); injectionTarget.getInjectionPoints(); } @Test(expected = UnsupportedOperationException.class) public void ccUOE() throws Exception { BeanManager bm = GuiceBeanManager.beanManager(null); CreationalContext<Object> cc = bm.createCreationalContext(null); cc.push(null); } }