/*************************************************************************** * Copyright 2009-2012 by Christian Ihle * * kontakt@usikkert.net * * * * This file is part of KouInject. * * * * KouInject is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * * published by the Free Software Foundation, either version 3 of * * the License, or (at your option) any later version. * * * * KouInject is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with KouInject. * * If not, see <http://www.gnu.org/licenses/>. * ***************************************************************************/ package net.usikkert.kouinject; import static net.usikkert.kouinject.testbeans.scanned.profile.Profiles.*; import static org.junit.Assert.*; import java.util.Arrays; import net.usikkert.kouinject.testbeans.scanned.component.SwingBean; import net.usikkert.kouinject.testbeans.scanned.profile.AcceptanceBean; import net.usikkert.kouinject.testbeans.scanned.profile.ArchiveBean; import net.usikkert.kouinject.testbeans.scanned.profile.DataSourceBean; import net.usikkert.kouinject.testbeans.scanned.profile.DevelopmentBean; import net.usikkert.kouinject.testbeans.scanned.profile.EnvironmentBean; import net.usikkert.kouinject.testbeans.scanned.profile.EnvironmentUsingBean; import net.usikkert.kouinject.testbeans.scanned.profile.InMemoryDataSourceBean; import net.usikkert.kouinject.testbeans.scanned.profile.JndiDataSourceBean; import net.usikkert.kouinject.testbeans.scanned.profile.LocalArchiveBean; import net.usikkert.kouinject.testbeans.scanned.profile.ProductionBean; import net.usikkert.kouinject.testbeans.scanned.profile.ProfileABean; import net.usikkert.kouinject.testbeans.scanned.profile.ProfileACBean; import net.usikkert.kouinject.testbeans.scanned.profile.ProfileBBean; import net.usikkert.kouinject.testbeans.scanned.profile.ProfileCBean; import net.usikkert.kouinject.testbeans.scanned.profile.RemoteArchiveBean; import org.junit.Test; /** * Tests of injection in beans with profiles. * * @author Christian Ihle */ public class ProfileBeanInjectionTest { private static final String SCANNED = "net.usikkert.kouinject.testbeans.scanned"; private Injector injector; @Test public void checkAcceptanceBeanWithInMemoryProfile() { injector = new DefaultInjector(Arrays.asList(ACCEPTANCE.value(), IN_MEMORY.value()), SCANNED); final AcceptanceBean acceptanceBean = injector.getBean(AcceptanceBean.class); assertNotNull(acceptanceBean); final DataSourceBean dataSourceBean = acceptanceBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(InMemoryDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = acceptanceBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); final EnvironmentBean environmentBean = injector.getBean(EnvironmentBean.class); assertNotNull(environmentBean); assertEquals(AcceptanceBean.class, environmentBean.getClass()); } @Test public void checkAcceptanceBeanWithJndiProfile() { injector = new DefaultInjector(Arrays.asList(ACCEPTANCE.value(), JNDI.value()), SCANNED); final AcceptanceBean acceptanceBean = injector.getBean(AcceptanceBean.class); assertNotNull(acceptanceBean); final DataSourceBean dataSourceBean = acceptanceBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(JndiDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = acceptanceBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); final EnvironmentBean environmentBean = injector.getBean(EnvironmentBean.class); assertNotNull(environmentBean); assertEquals(AcceptanceBean.class, environmentBean.getClass()); } @Test public void checkDevelopmentBeanWithInMemoryProfile() { injector = new DefaultInjector(Arrays.asList(DEVELOPMENT.value(), IN_MEMORY.value()), SCANNED); final DevelopmentBean developmentBean = injector.getBean(DevelopmentBean.class); assertNotNull(developmentBean); final DataSourceBean dataSourceBean = developmentBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(InMemoryDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = developmentBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(LocalArchiveBean.class, archiveBean.getClass()); final EnvironmentBean environmentBean = injector.getBean(EnvironmentBean.class); assertNotNull(environmentBean); assertEquals(DevelopmentBean.class, environmentBean.getClass()); } @Test public void checkDevelopmentBeanWithJndiProfile() { injector = new DefaultInjector(Arrays.asList(DEVELOPMENT.value(), JNDI.value()), SCANNED); final DevelopmentBean developmentBean = injector.getBean(DevelopmentBean.class); assertNotNull(developmentBean); final DataSourceBean dataSourceBean = developmentBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(JndiDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = developmentBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(LocalArchiveBean.class, archiveBean.getClass()); final EnvironmentBean environmentBean = injector.getBean(EnvironmentBean.class); assertNotNull(environmentBean); assertEquals(DevelopmentBean.class, environmentBean.getClass()); } @Test public void checkEnvironmentUsingBeanWithAcceptanceAndInMemoryProfile() { injector = new DefaultInjector(Arrays.asList(ACCEPTANCE.value(), IN_MEMORY.value()), SCANNED); final EnvironmentUsingBean environmentUsingBean = injector.getBean(EnvironmentUsingBean.class); assertNotNull(environmentUsingBean); final EnvironmentBean environmentBean = environmentUsingBean.getEnvironmentBean(); assertNotNull(environmentBean); assertEquals(AcceptanceBean.class, environmentBean.getClass()); final DataSourceBean dataSourceBean = environmentBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(InMemoryDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = environmentBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); } @Test public void checkEnvironmentUsingBeanWithAcceptanceAndJndiProfile() { injector = new DefaultInjector(Arrays.asList(ACCEPTANCE.value(), JNDI.value()), SCANNED); final EnvironmentUsingBean environmentUsingBean = injector.getBean(EnvironmentUsingBean.class); assertNotNull(environmentUsingBean); final EnvironmentBean environmentBean = environmentUsingBean.getEnvironmentBean(); assertNotNull(environmentBean); assertEquals(AcceptanceBean.class, environmentBean.getClass()); final DataSourceBean dataSourceBean = environmentBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(JndiDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = environmentBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); } @Test public void checkEnvironmentUsingBeanWithDevelopmentAndInMemoryProfile() { injector = new DefaultInjector(Arrays.asList(DEVELOPMENT.value(), IN_MEMORY.value()), SCANNED); final EnvironmentUsingBean environmentUsingBean = injector.getBean(EnvironmentUsingBean.class); assertNotNull(environmentUsingBean); final EnvironmentBean environmentBean = environmentUsingBean.getEnvironmentBean(); assertNotNull(environmentBean); assertEquals(DevelopmentBean.class, environmentBean.getClass()); final DataSourceBean dataSourceBean = environmentBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(InMemoryDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = environmentBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(LocalArchiveBean.class, archiveBean.getClass()); } @Test public void checkEnvironmentUsingBeanWithDevelopmentAndJndiProfile() { injector = new DefaultInjector(Arrays.asList(DEVELOPMENT.value(), JNDI.value()), SCANNED); final EnvironmentUsingBean environmentUsingBean = injector.getBean(EnvironmentUsingBean.class); assertNotNull(environmentUsingBean); final EnvironmentBean environmentBean = environmentUsingBean.getEnvironmentBean(); assertNotNull(environmentBean); assertEquals(DevelopmentBean.class, environmentBean.getClass()); final DataSourceBean dataSourceBean = environmentBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(JndiDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = environmentBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(LocalArchiveBean.class, archiveBean.getClass()); } @Test public void checkEnvironmentUsingBeanWithProductionAndInMemoryProfile() { injector = new DefaultInjector(Arrays.asList(PRODUCTION.value(), IN_MEMORY.value()), SCANNED); final EnvironmentUsingBean environmentUsingBean = injector.getBean(EnvironmentUsingBean.class); assertNotNull(environmentUsingBean); final EnvironmentBean environmentBean = environmentUsingBean.getEnvironmentBean(); assertNotNull(environmentBean); assertEquals(ProductionBean.class, environmentBean.getClass()); final DataSourceBean dataSourceBean = environmentBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(InMemoryDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = environmentBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); } @Test public void checkEnvironmentUsingBeanWithProductionAndJndiProfile() { injector = new DefaultInjector(Arrays.asList(PRODUCTION.value(), JNDI.value()), SCANNED); final EnvironmentUsingBean environmentUsingBean = injector.getBean(EnvironmentUsingBean.class); assertNotNull(environmentUsingBean); final EnvironmentBean environmentBean = environmentUsingBean.getEnvironmentBean(); assertNotNull(environmentBean); assertEquals(ProductionBean.class, environmentBean.getClass()); final DataSourceBean dataSourceBean = environmentBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(JndiDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = environmentBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); } @Test public void checkInMemoryDataSourceBean() { injector = new DefaultInjector(Arrays.asList(IN_MEMORY.value()), SCANNED); final InMemoryDataSourceBean inMemoryDataSourceBean = injector.getBean(InMemoryDataSourceBean.class); assertNotNull(inMemoryDataSourceBean); final DataSourceBean dataSourceBean = injector.getBean(DataSourceBean.class); assertNotNull(dataSourceBean); assertEquals(InMemoryDataSourceBean.class, dataSourceBean.getClass()); } @Test public void checkJndiDataSourceBean() { injector = new DefaultInjector(Arrays.asList(JNDI.value()), SCANNED); final JndiDataSourceBean jndiDataSourceBean = injector.getBean(JndiDataSourceBean.class); assertNotNull(jndiDataSourceBean); final DataSourceBean dataSourceBean = injector.getBean(DataSourceBean.class); assertNotNull(dataSourceBean); assertEquals(JndiDataSourceBean.class, dataSourceBean.getClass()); } @Test public void checkLocalArchiveBean() { injector = new DefaultInjector(Arrays.asList(DEVELOPMENT.value()), SCANNED); final LocalArchiveBean localArchiveBean = injector.getBean(LocalArchiveBean.class); assertNotNull(localArchiveBean); final ArchiveBean archiveBean = injector.getBean(ArchiveBean.class); assertNotNull(archiveBean); assertEquals(LocalArchiveBean.class, archiveBean.getClass()); } @Test public void checkProductionBeanWithInMemoryProfile() { injector = new DefaultInjector(Arrays.asList(PRODUCTION.value(), IN_MEMORY.value()), SCANNED); final ProductionBean productionBean = injector.getBean(ProductionBean.class); assertNotNull(productionBean); final DataSourceBean dataSourceBean = productionBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(InMemoryDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = productionBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); final EnvironmentBean environmentBean = injector.getBean(EnvironmentBean.class); assertNotNull(environmentBean); assertEquals(ProductionBean.class, environmentBean.getClass()); } @Test public void checkProductionBeanWithJndiProfile() { injector = new DefaultInjector(Arrays.asList(PRODUCTION.value(), JNDI.value()), SCANNED); final ProductionBean productionBean = injector.getBean(ProductionBean.class); assertNotNull(productionBean); final DataSourceBean dataSourceBean = productionBean.getDataSourceBean(); assertNotNull(dataSourceBean); assertEquals(JndiDataSourceBean.class, dataSourceBean.getClass()); final ArchiveBean archiveBean = productionBean.getArchiveBean(); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); final EnvironmentBean environmentBean = injector.getBean(EnvironmentBean.class); assertNotNull(environmentBean); assertEquals(ProductionBean.class, environmentBean.getClass()); } @Test public void checkProfileABean() { injector = new DefaultInjector(Arrays.asList(PROFILE_A.value()), SCANNED); final ProfileABean profileABean = injector.getBean(ProfileABean.class); assertNotNull(profileABean); } @Test public void checkProfileACBean() { injector = new DefaultInjector(Arrays.asList(PROFILE_A.value()), SCANNED); final ProfileACBean profileACBean = injector.getBean(ProfileACBean.class); assertNotNull(profileACBean); } @Test public void checkProfileBBean() { injector = new DefaultInjector(Arrays.asList(PROFILE_B.value()), SCANNED); final ProfileBBean profileBBean = injector.getBean(ProfileBBean.class); assertNotNull(profileBBean); } @Test public void checkProfileCBean() { injector = new DefaultInjector(Arrays.asList(PROFILE_C.value()), SCANNED); final ProfileCBean profileCBean = injector.getBean(ProfileCBean.class); assertNotNull(profileCBean); } @Test public void checkRemoteArchiveBeanWithProductionProfile() { injector = new DefaultInjector(Arrays.asList(PRODUCTION.value()), SCANNED); final RemoteArchiveBean remoteArchiveBean = injector.getBean(RemoteArchiveBean.class); assertNotNull(remoteArchiveBean); final ArchiveBean archiveBean = injector.getBean(ArchiveBean.class); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); } @Test public void checkRemoteArchiveBeanWithAcceptanceProfile() { injector = new DefaultInjector(Arrays.asList(ACCEPTANCE.value()), SCANNED); final RemoteArchiveBean remoteArchiveBean = injector.getBean(RemoteArchiveBean.class); assertNotNull(remoteArchiveBean); final ArchiveBean archiveBean = injector.getBean(ArchiveBean.class); assertNotNull(archiveBean); assertEquals(RemoteArchiveBean.class, archiveBean.getClass()); } @Test public void checkSwingBean() { injector = new DefaultInjector(Arrays.asList(SWING.value()), SCANNED); final SwingBean bean = injector.getBean(SwingBean.class); assertNotNull(bean); } }