View Javadoc

1   package com.atlassian.plugin.util;
2   
3   import com.google.common.collect.Sets;
4   import junit.framework.TestCase;
5   import com.atlassian.plugin.descriptors.MockUnusedModuleDescriptor;
6   import com.atlassian.plugin.descriptors.RequiresRestart;
7   import com.atlassian.plugin.Plugin;
8   import com.mockobjects.dynamic.Mock;
9   import org.dom4j.Element;
10  
11  import java.util.Arrays;
12  import java.util.Collections;
13  
14  public class TestPluginUtils extends TestCase
15  {
16      public void testDoesPluginRequireRestartDevMode()
17      {
18          try
19          {
20              System.setProperty("atlassian.dev.mode", "true");
21              Mock mockPlugin = new Mock(Plugin.class);
22              assertFalse(PluginUtils.doesPluginRequireRestart((Plugin) mockPlugin.proxy()));
23              mockPlugin.verify();
24          }
25          finally
26          {
27              System.clearProperty("atlassian.dev.mode");
28          }
29  
30          Mock mockPlugin2 = new Mock(Plugin.class);
31          mockPlugin2.expectAndReturn("getModuleDescriptors", Arrays.asList(new DynamicModuleDescriptor(), new RequiresRestartModuleDescriptor()));
32          assertTrue(PluginUtils.doesPluginRequireRestart((Plugin) mockPlugin2.proxy()));
33          mockPlugin2.verify();                
34      }
35  
36      public void testDoesPluginRequireRestart()
37      {
38          Mock mockPlugin = new Mock(Plugin.class);
39          mockPlugin.expectAndReturn("getModuleDescriptors", Arrays.asList(new DynamicModuleDescriptor(), new RequiresRestartModuleDescriptor()));
40          assertTrue(PluginUtils.doesPluginRequireRestart((Plugin) mockPlugin.proxy()));
41          mockPlugin.verify();
42  
43          mockPlugin = new Mock(Plugin.class);
44          mockPlugin.expectAndReturn("getModuleDescriptors", Arrays.asList(new DynamicModuleDescriptor()));
45          assertFalse(PluginUtils.doesPluginRequireRestart((Plugin) mockPlugin.proxy()));
46          mockPlugin.verify();
47  
48          mockPlugin = new Mock(Plugin.class);
49          mockPlugin.expectAndReturn("getModuleDescriptors", Arrays.asList());
50          assertFalse(PluginUtils.doesPluginRequireRestart((Plugin) mockPlugin.proxy()));
51          mockPlugin.verify();
52  
53          mockPlugin = new Mock(Plugin.class);
54          mockPlugin.expectAndReturn("getModuleDescriptors", Arrays.asList(new RequiresRestartModuleDescriptor()));
55          assertTrue(PluginUtils.doesPluginRequireRestart((Plugin) mockPlugin.proxy()));
56          mockPlugin.verify();
57      }
58  
59      static class DynamicModuleDescriptor extends MockUnusedModuleDescriptor
60      {}
61  
62      @RequiresRestart
63      static class RequiresRestartModuleDescriptor extends MockUnusedModuleDescriptor {}
64  
65      public void testDoesModuleElementApplyToApplication()
66      {
67          testDoesModuleElementApplyToApplication("jira", true);
68          testDoesModuleElementApplyToApplication("bamboo", false);
69          testDoesModuleElementApplyToApplication(null, true);
70          testDoesModuleElementApplyToApplication("", true);
71          testDoesModuleElementApplyToApplication(" ", true);
72          testDoesModuleElementApplyToApplication(",", true);
73          testDoesModuleElementApplyToApplication(", ,, ", true);
74          testDoesModuleElementApplyToApplication("jira,bamboo", true);
75          testDoesModuleElementApplyToApplication("bamboo, confluence", true);
76          testDoesModuleElementApplyToApplication("bamboo,crowd", false);
77          testDoesModuleElementApplyToApplication("bamboo ,jira", true);
78          testDoesModuleElementApplyToApplication("bamboo,,jira,", true);
79          testDoesModuleElementApplyToApplication("bamboo, crowd,", false);
80      }
81  
82      private void testDoesModuleElementApplyToApplication(final String applicationAttribute, final boolean expectedResult) {
83          final Mock mockElement = new Mock(Element.class);
84          mockElement.expectAndReturn("attributeValue", "application", applicationAttribute);
85          assertEquals(expectedResult, PluginUtils.doesModuleElementApplyToApplication((Element) mockElement.proxy(), Sets.newHashSet("jira", "confluence")));
86          mockElement.verify();
87      }
88  
89  }