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 {
15 ModuleFactory moduleCreator;
16 private HostContainer hostContainer;
17
18 @Override
19 protected void setUp() throws Exception
20 {
21 hostContainer = mock(HostContainer.class);
22 moduleCreator = new ClassPrefixModuleFactory(hostContainer);
23 }
24
25 @Override
26 protected void tearDown() throws Exception
27 {
28 super.tearDown();
29 }
30
31 public void testCreateBeanUsingHostContainer() throws Exception
32 {
33 final ModuleDescriptor<Object> moduleDescriptor = mock(ModuleDescriptor.class);
34 final Plugin plugin = mock(Plugin.class);
35 when(plugin.<Object>loadClass(eq("myBean"), (Class)anyObject())).thenReturn(Object.class);
36
37 when(moduleDescriptor.getPlugin()).thenReturn(plugin);
38 when(moduleDescriptor.getModuleClass()).thenReturn(Object.class);
39 final Object object = new Object();
40 when(hostContainer.create(Object.class)).thenReturn(object);
41
42 final Object bean = moduleCreator.createModule("myBean", moduleDescriptor);
43 assertEquals(object, bean);
44 }
45
46 public void testCreateBeanUsingPluginContainer() throws Exception
47 {
48 final ModuleDescriptor<Object> moduleDescriptor = mock(ModuleDescriptor.class);
49 final ContainerAccessor containerAccessor = mock(ContainerAccessor.class);
50 final Plugin plugin = new MockContainerManagedPlugin(containerAccessor);
51
52 when(moduleDescriptor.getPlugin()).thenReturn(plugin);
53 final Object beanObject = new Object();
54 when(containerAccessor.createBean(Object.class)).thenReturn(beanObject);
55 final Object bean = moduleCreator.createModule("java.lang.Object", moduleDescriptor);
56 assertEquals(beanObject, bean);
57 }
58
59 }