View Javadoc
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  }