1 package com.atlassian.plugin.module;
2
3 import com.atlassian.plugin.ModuleDescriptor;
4 import com.atlassian.plugin.Plugin;
5 import com.atlassian.plugin.hostcontainer.HostContainer;
6 import junit.framework.TestCase;
7
8 import static org.mockito.Matchers.anyObject;
9 import static org.mockito.Matchers.eq;
10 import static org.mockito.Mockito.mock;
11 import static org.mockito.Mockito.when;
12
13 public class TestClassModuleFactory extends TestCase {
14 ModuleFactory moduleCreator;
15 private HostContainer hostContainer;
16
17 @Override
18 protected void setUp() throws Exception {
19 hostContainer = mock(HostContainer.class);
20 moduleCreator = new ClassPrefixModuleFactory(hostContainer);
21 }
22
23 @Override
24 protected void tearDown() throws Exception {
25 super.tearDown();
26 }
27
28 public void testCreateBeanUsingHostContainer() throws Exception {
29 final ModuleDescriptor<Object> moduleDescriptor = mock(ModuleDescriptor.class);
30 final Plugin plugin = mock(Plugin.class);
31 when(plugin.<Object>loadClass(eq("myBean"), (Class) anyObject())).thenReturn(Object.class);
32
33 when(moduleDescriptor.getPlugin()).thenReturn(plugin);
34 when(moduleDescriptor.getModuleClass()).thenReturn(Object.class);
35 final Object object = new Object();
36 when(hostContainer.create(Object.class)).thenReturn(object);
37
38 final Object bean = moduleCreator.createModule("myBean", moduleDescriptor);
39 assertEquals(object, bean);
40 }
41
42 public void testCreateBeanUsingPluginContainer() throws Exception {
43 final ModuleDescriptor<Object> moduleDescriptor = mock(ModuleDescriptor.class);
44 final ContainerAccessor containerAccessor = mock(ContainerAccessor.class);
45 final Plugin plugin = new MockContainerManagedPlugin(containerAccessor);
46
47 when(moduleDescriptor.getPlugin()).thenReturn(plugin);
48 final Object beanObject = new Object();
49 when(containerAccessor.createBean(Object.class)).thenReturn(beanObject);
50 final Object bean = moduleCreator.createModule("java.lang.Object", moduleDescriptor);
51 assertEquals(beanObject, bean);
52 }
53
54 }