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 }