/** * Copyright 2013 Red Hat, Inc. and/or its affiliates. * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package test.org.jboss.forge.furnace.addons; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; import java.util.Iterator; import javax.inject.Inject; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.forge.arquillian.AddonDeployment; import org.jboss.forge.arquillian.AddonDeployments; import org.jboss.forge.arquillian.archive.AddonArchive; import org.jboss.forge.furnace.addons.AddonRegistry; import org.jboss.forge.furnace.repositories.AddonDependencyEntry; import org.jboss.forge.furnace.services.Imported; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import test.org.jboss.forge.furnace.mocks.Aa; import test.org.jboss.forge.furnace.mocks.BB; import test.org.jboss.forge.furnace.mocks.PlainBean; import test.org.jboss.forge.furnace.mocks.PlainInterface; import test.org.jboss.forge.furnace.mocks.PlainQualifier; import test.org.jboss.forge.furnace.mocks.QualifiedPlainBean; import test.org.jboss.forge.furnace.mocks.ServiceBean; import test.org.jboss.forge.furnace.mocks.ServiceInterface; /** * * @author <a href="ggastald@redhat.com">George Gastaldi</a> */ @RunWith(Arquillian.class) public class AddonRegistryTest { @Deployment @AddonDeployments({ @AddonDeployment(name = "org.jboss.forge.furnace.container:cdi") }) public static AddonArchive getDeployment() { AddonArchive archive = ShrinkWrap .create(AddonArchive.class) .addClasses(PlainInterface.class, PlainBean.class, PlainQualifier.class, QualifiedPlainBean.class, ServiceInterface.class, ServiceBean.class, Aa.class, BB.class) .addAsAddonDependencies( AddonDependencyEntry.create("org.jboss.forge.furnace.container:cdi") ) .addBeansXML(); return archive; } @Inject private AddonRegistry addonRegistry; @Test public void testImported() throws Exception { Imported<ServiceInterface> services = addonRegistry.getServices(ServiceInterface.class); Assert.assertFalse(services.isUnsatisfied()); Assert.assertFalse(services.isAmbiguous()); Assert.assertNotNull(services.get()); Assert.assertNotNull(services.iterator().next()); Assert.assertTrue(services.iterator().hasNext()); } @Test public void testImportedWithQualifiers() throws Exception { Imported<PlainInterface> services = addonRegistry.getServices(PlainInterface.class); Assert.assertTrue(services.isAmbiguous()); Assert.assertFalse(services.isUnsatisfied()); Assert.assertTrue(services.iterator().hasNext()); Assert.assertNotNull(services.iterator().next()); } @Test public void testImportedWithExpectedObjectsSameClassLoader() throws Exception { Imported<Aa> services = addonRegistry.getServices(Aa.class); Assert.assertFalse(services.isUnsatisfied()); Assert.assertFalse(services.isAmbiguous()); Iterator<Aa> iterator = services.iterator(); Assert.assertTrue(iterator.hasNext()); Assert.assertThat(iterator.next(), is(instanceOf(Aa.class))); Assert.assertFalse(iterator.hasNext()); Imported<BB> services2 = addonRegistry.getServices(BB.class); Assert.assertFalse(services2.isUnsatisfied()); Assert.assertFalse(services2.isAmbiguous()); Iterator<BB> iterator2 = services2.iterator(); Assert.assertTrue(iterator2.hasNext()); Assert.assertThat(iterator2.next(), is(instanceOf(BB.class))); Assert.assertFalse(iterator2.hasNext()); } }