diff --git a/source/java/org/alfresco/util/test/junitrules/ApplicationContextInit.java b/source/java/org/alfresco/util/test/junitrules/ApplicationContextInit.java index c95179609b..2f307ffe2e 100644 --- a/source/java/org/alfresco/util/test/junitrules/ApplicationContextInit.java +++ b/source/java/org/alfresco/util/test/junitrules/ApplicationContextInit.java @@ -19,6 +19,7 @@ */ package org.alfresco.util.test.junitrules; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -79,6 +80,34 @@ public class ApplicationContextInit extends ExternalResource this.configLocations = configLocations; } + /** + * This factory method constructs a JUnit rule which will bring up an ApplicationContext consisting + * of the default Alfresco context with any additionConfigLocations appended. It is a convenient way to specify + * override contexts in test code. + * + * @param additionalConfigLocations addition config locations containing additional or overriding beans. + */ + public static ApplicationContextInit createStandardContextWithOverrides(String... additionalConfigLocations) + { + List contexts = new ArrayList(); + + // The defaults (currently only one) + for (String defaultConfigLocation: ApplicationContextHelper.CONFIG_LOCATIONS) + { + contexts.add(defaultConfigLocation); + } + + // any user supplied extras + for (String additionalContext : additionalConfigLocations) + { + contexts.add(additionalContext); + } + + String[] contextsAsArray = contexts.toArray(new String[0]); + + return new ApplicationContextInit(contextsAsArray); + } + @Override protected void before() throws Throwable { // Were any context locations specified in the constructor? diff --git a/source/java/org/alfresco/util/test/junitrules/ApplicationContextInitTest.java b/source/java/org/alfresco/util/test/junitrules/ApplicationContextInitTest.java new file mode 100644 index 0000000000..5707762161 --- /dev/null +++ b/source/java/org/alfresco/util/test/junitrules/ApplicationContextInitTest.java @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2005-2012 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco 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. + * + * Alfresco 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 Alfresco. If not, see . + */ + +package org.alfresco.util.test.junitrules; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.alfresco.service.cmr.repository.ContentService; +import org.junit.ClassRule; +import org.junit.Test; + +/** + * Test class for {@link ApplicationContextInit}. + * + * @author Neil Mc Erlean + * @since Odin + */ +public class ApplicationContextInitTest +{ + // Some dummy contexts with test beans in them. + public static final String[] dummySpringContexts = new String[] {"classpath:org/alfresco/util/test/junitrules/dummy1-context.xml", + "classpath:org/alfresco/util/test/junitrules/dummy2-context.xml"}; + + // Rule to initialise the default Alfresco spring configuration + @ClassRule public static ApplicationContextInit APP_CONTEXT_INIT = ApplicationContextInit.createStandardContextWithOverrides(dummySpringContexts); + + @Test public void ensureSpringContextWasInitedWithOverrides() throws Exception + { + // Bean from the standard Alfresco context + assertNotNull("Spring context did not contain expected bean.", + APP_CONTEXT_INIT.getApplicationContext().getBean("contentService", ContentService.class)); + + // Bean from the first override context + assertEquals("Value from dummy1-context.xml", + APP_CONTEXT_INIT.getApplicationContext().getBean("testBean1", String.class)); + + // Bean from the second override context + assertEquals("Value from dummy2-context.xml", + APP_CONTEXT_INIT.getApplicationContext().getBean("testBean2", String.class)); + + // Bean overridden in second context + assertEquals("Value from dummy2-context.xml", + APP_CONTEXT_INIT.getApplicationContext().getBean("testBean1and2", String.class)); + } +} diff --git a/source/java/org/alfresco/util/test/junitrules/dummy1-context.xml b/source/java/org/alfresco/util/test/junitrules/dummy1-context.xml new file mode 100644 index 0000000000..92efded7b5 --- /dev/null +++ b/source/java/org/alfresco/util/test/junitrules/dummy1-context.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/source/java/org/alfresco/util/test/junitrules/dummy2-context.xml b/source/java/org/alfresco/util/test/junitrules/dummy2-context.xml new file mode 100644 index 0000000000..aaf1f33444 --- /dev/null +++ b/source/java/org/alfresco/util/test/junitrules/dummy2-context.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + +