View Javadoc
1   package com.atlassian.plugin.osgi.factory;
2   
3   import com.atlassian.plugin.ModuleDescriptorFactory;
4   import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
5   import com.atlassian.plugin.descriptors.RequiresRestart;
6   import com.atlassian.plugin.descriptors.UnrecognisedModuleDescriptorRequiringRestart;
7   import com.atlassian.plugin.module.ModuleFactory;
8   import org.junit.Test;
9   
10  import static org.junit.Assert.assertEquals;
11  import static org.junit.Assert.assertFalse;
12  import static org.junit.Assert.assertTrue;
13  import static org.mockito.Mockito.mock;
14  import static org.mockito.Mockito.when;
15  
16  public class TestUnavailableModuleDescriptorRequiringRestartFallbackFactory {
17      @Test
18      public void doesNotInterceptForUnrecognisedModule() throws Exception {
19          ModuleDescriptorFactory mdf = mock(ModuleDescriptorFactory.class);
20  
21          ModuleDescriptorFactory wrapper = new UnavailableModuleDescriptorRequiringRestartFallbackFactory(mdf);
22  
23          assertFalse(wrapper.hasModuleDescriptor("test"));
24          assertEquals(null, wrapper.getModuleDescriptor("test"));
25          assertEquals(null, wrapper.getModuleDescriptorClass("test"));
26      }
27  
28      @Test
29      public void returnsPlaceholderThatRequiresRestartWhenModuleRequiresRestart() throws Exception {
30          ModuleDescriptorFactory mdf = mock(ModuleDescriptorFactory.class);
31          when(mdf.hasModuleDescriptor("test")).thenReturn(true);
32          when(mdf.getModuleDescriptorClass("test")).thenReturn((Class) RequiresRestartModuleDescriptor.class);
33  
34          ModuleDescriptorFactory wrapper = new UnavailableModuleDescriptorRequiringRestartFallbackFactory(mdf);
35  
36          assertTrue(wrapper.hasModuleDescriptor("test"));
37          assertEquals(UnrecognisedModuleDescriptorRequiringRestart.class, wrapper.getModuleDescriptor("test").getClass());
38          assertEquals(UnrecognisedModuleDescriptorRequiringRestart.class, wrapper.getModuleDescriptorClass("test"));
39      }
40  
41      @RequiresRestart
42      static class RequiresRestartModuleDescriptor extends AbstractModuleDescriptor<Void> {
43          public RequiresRestartModuleDescriptor(ModuleFactory moduleFactory) {
44              super(moduleFactory);
45          }
46  
47          @Override
48          public Void getModule() {
49              return null;
50          }
51      }
52  }