package org.stokesdrift.container; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.spi.Context; import javax.enterprise.inject.spi.Bean; import org.jboss.weld.environment.se.Weld; import org.jboss.weld.environment.se.WeldContainer; import org.jboss.weld.literal.InitializedLiteral; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.stokesdrift.container.jruby.RackApplicationBuilder; public class ApplicationBuilderFactoryTest { private WeldContainer container; private Weld weld; private Context context; @Before public void setup() { weld = new Weld(); container = weld.initialize(); context = container.getBeanManager().getContext(ApplicationScoped.class); Assert.assertTrue(context.isActive()); } @Test public void testRackApplicationBuilder() throws Exception { ApplicationBuilderFactory factory = container.instance().select(ApplicationBuilderFactory.class).get(); ApplicationBuilder rackBuilder = factory.getBuilder("rack"); Assert.assertNotNull(rackBuilder); } @Test public void testContext() { Assert.assertTrue(context.isActive()); ApplicationBuilderFactory builder = container.instance().select(ApplicationBuilderFactory.class).get(); Assert.assertNotNull(builder); Assert.assertNotNull(builder.builder); Assert.assertFalse(builder.builder.isUnsatisfied()); Iterator<ApplicationBuilder> builders = builder.builder.iterator(); List<ApplicationBuilder> builderList = new ArrayList<ApplicationBuilder>(); while(builders.hasNext()) { ApplicationBuilder builder_temp = builders.next(); builderList.add(builder_temp); } Assert.assertTrue(builderList.size() > 0 ); ApplicationBuilder appBuilder = container.instance().select(ApplicationBuilder.class).get(); Assert.assertNotNull(appBuilder); } @Test public void testWeld() throws Exception { container.event().select(ApplicationBuilder.class, InitializedLiteral.APPLICATION).fire(new RackApplicationBuilder(null)); ApplicationBuilder builder = container.instance().select(ApplicationBuilder.class).get(); Assert.assertNotNull(builder); Set<Bean<?>> builders = container.getBeanManager().getBeans("rack_builder"); Iterator<Bean<?>> iter = builders.iterator(); List<Class<?>> names = new ArrayList<Class<?>>(); while(iter.hasNext()) { Bean<?> bean = iter.next(); names.add(bean.getClass()); } Assert.assertTrue(names.size() > 0 ); } @After public void teardown() { weld.shutdown(); } }