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 org.junit.Before;
7   import org.junit.Test;
8   import org.junit.runner.RunWith;
9   import org.mockito.Mock;
10  import org.mockito.junit.MockitoJUnitRunner;
11  
12  import static org.junit.Assert.assertEquals;
13  import static org.mockito.ArgumentMatchers.any;
14  import static org.mockito.ArgumentMatchers.eq;
15  import static org.mockito.Mockito.mock;
16  import static org.mockito.Mockito.when;
17  
18  @RunWith(MockitoJUnitRunner.class)
19  public class TestClassModuleFactory {
20  
21      private ModuleFactory moduleCreator;
22      @Mock
23      private ModuleDescriptor<Object> moduleDescriptor;
24      private HostContainer hostContainer;
25  
26      @Before
27      public void setUp() throws Exception {
28          hostContainer = mock(HostContainer.class);
29          moduleCreator = new ClassPrefixModuleFactory(hostContainer);
30      }
31  
32      @Test
33      public void testCreateBeanUsingHostContainer() throws Exception {
34          final Plugin plugin = mock(Plugin.class);
35          when(plugin.loadClass(eq("myBean"), any())).thenReturn(Object.class);
36  
37          when(moduleDescriptor.getPlugin()).thenReturn(plugin);
38          final Object object = new Object();
39          when(hostContainer.create(Object.class)).thenReturn(object);
40  
41          final Object bean = moduleCreator.createModule("myBean", moduleDescriptor);
42          assertEquals(object, bean);
43      }
44  
45      @Test
46      public void testCreateBeanUsingPluginContainer() {
47          final ContainerAccessor containerAccessor = mock(ContainerAccessor.class);
48          final Plugin plugin = new MockContainerManagedPlugin(containerAccessor);
49  
50          when(moduleDescriptor.getPlugin()).thenReturn(plugin);
51          final Object beanObject = new Object();
52          when(containerAccessor.createBean(Object.class)).thenReturn(beanObject);
53          final Object bean = moduleCreator.createModule("java.lang.Object", moduleDescriptor);
54          assertEquals(beanObject, bean);
55      }
56  }