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 }