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 }