diff --git a/core/pom.xml b/core/pom.xml index dd48568..958f86c 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -46,6 +46,12 @@ 1.2.15 test + + org.easymock + easymock + 2.5.2 + test + diff --git a/core/src/main/java/org/synyx/hera/core/support/BeanListFactoryBean.java b/core/src/main/java/org/synyx/hera/core/support/BeanListFactoryBean.java index 1832836..21a468a 100644 --- a/core/src/main/java/org/synyx/hera/core/support/BeanListFactoryBean.java +++ b/core/src/main/java/org/synyx/hera/core/support/BeanListFactoryBean.java @@ -47,7 +47,7 @@ public class BeanListFactoryBean extends AbstractTypeAwareSupport List beans = getBeans(); Collections.sort(beans, COMPARATOR); - return getBeans(); + return beans; } diff --git a/core/src/test/java/org/synyx/hera/core/support/BeanListFactoryBeanUnitTest.java b/core/src/test/java/org/synyx/hera/core/support/BeanListFactoryBeanUnitTest.java new file mode 100644 index 0000000..7e3925c --- /dev/null +++ b/core/src/test/java/org/synyx/hera/core/support/BeanListFactoryBeanUnitTest.java @@ -0,0 +1,79 @@ +package org.synyx.hera.core.support; + +import static org.easymock.EasyMock.*; +import static org.junit.Assert.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.core.Ordered; + + +/** + * Unit test for {@link BeanListFactoryBean}. + * + * @author Oliver Gierke - gierke@synyx.de + */ +public class BeanListFactoryBeanUnitTest { + + private BeanListFactoryBean factory; + private ApplicationContext context; + + + @Before + public void setUp() { + + context = createNiceMock(ApplicationContext.class); + + factory = new BeanListFactoryBean(); + factory.setApplicationContext(context); + factory.setType(Ordered.class); + } + + + @Test + public void regardsOrderOfBeans() throws Exception { + + // They shall be switched in the result. + Ordered first = getOrdered(5); + Ordered second = getOrdered(0); + + Map beans = new HashMap(); + beans.put("first", first); + beans.put("second", second); + + expect(context.getBeansOfType(Ordered.class)).andReturn(beans) + .anyTimes(); + replay(context); + + Object result = factory.getObject(); + assertTrue(result instanceof List); + + List members = (List) result; + + assertEquals(0, members.indexOf(second)); + assertEquals(1, members.indexOf(first)); + } + + + /** + * Returns an {@link Ordered} with the given order. + * + * @param order + * @return + */ + public Ordered getOrdered(final int order) { + + return new Ordered() { + + public int getOrder() { + + return order; + } + }; + } +}