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