1 package com.atlassian.plugin.web.descriptors;
2
3 import java.io.InputStream;
4 import java.net.URL;
5
6 import junit.framework.TestCase;
7
8 import org.dom4j.Document;
9 import org.dom4j.DocumentException;
10 import org.dom4j.DocumentHelper;
11 import org.dom4j.Element;
12
13 import com.atlassian.plugin.Plugin;
14 import com.atlassian.plugin.PluginParseException;
15 import com.atlassian.plugin.impl.AbstractPlugin;
16
17 public class TestDefaultWebItemModuleDescriptor extends TestCase
18 {
19 private WebItemModuleDescriptor descriptor;
20 private final Plugin plugin = new MockPlugin(this.getClass().getName());
21
22 @Override
23 protected void setUp() throws Exception
24 {
25 descriptor = new DefaultWebItemModuleDescriptor(new MockWebInterfaceManager());
26 }
27
28 public void testGetStyleClass() throws DocumentException, PluginParseException
29 {
30 final String className = "testClass";
31 final String styleClass = "<styleClass>" + className + "</styleClass>";
32
33 final Element element = createElement(styleClass);
34 descriptor.init(plugin, element);
35
36 assertEquals(className, descriptor.getStyleClass());
37 }
38
39 public void testGetStyleClassTrimmed() throws DocumentException, PluginParseException
40 {
41 final String className = "testClass";
42 final String styleClass = "<styleClass> " + className + " </styleClass>";
43
44 final Element element = createElement(styleClass);
45 descriptor.init(plugin, element);
46
47 assertEquals(className, descriptor.getStyleClass());
48 }
49
50 public void testGetStyleClassSpaceSeparated() throws DocumentException, PluginParseException
51 {
52 final String className = "testClass testClass2";
53 final String styleClass = "<styleClass>" + className + "</styleClass>";
54
55 final Element element = createElement(styleClass);
56 descriptor.init(plugin, element);
57
58 assertEquals(className, descriptor.getStyleClass());
59 }
60
61 public void testGetStyleClassEmpty() throws DocumentException, PluginParseException
62 {
63 final String styleClass = "<styleClass></styleClass>";
64
65 final Element element = createElement(styleClass);
66 descriptor.init(plugin, element);
67
68 assertEquals("", descriptor.getStyleClass());
69 }
70
71 public void testGetStyleClassNone() throws DocumentException, PluginParseException
72 {
73 final String styleClass = "";
74
75 final Element element = createElement(styleClass);
76 descriptor.init(plugin, element);
77
78 assertNotNull(descriptor.getStyleClass());
79 assertEquals("", descriptor.getStyleClass());
80 }
81
82 private Element createElement(final String childElement) throws DocumentException
83 {
84 final String rootElement = "<root key=\"key\">" + childElement + "</root>";
85 final Document document = DocumentHelper.parseText(rootElement);
86 final Element element = document.getRootElement();
87 return element;
88 }
89
90 private class MockPlugin extends AbstractPlugin
91 {
92 MockPlugin(final String key)
93 {
94 setKey(key);
95 setName(key);
96 }
97
98 public boolean isUninstallable()
99 {
100 return false;
101 }
102
103 public boolean isDeleteable()
104 {
105 return false;
106 }
107
108 public boolean isDynamicallyLoaded()
109 {
110 return false;
111 }
112
113 public <T> Class<T> loadClass(final String clazz, final Class<?> callingClass) throws ClassNotFoundException
114 {
115 return null;
116 }
117
118 public ClassLoader getClassLoader()
119 {
120 return this.getClass().getClassLoader();
121 }
122
123 public URL getResource(final String path)
124 {
125 return null;
126 }
127
128 public InputStream getResourceAsStream(final String name)
129 {
130 return null;
131 }
132 }
133 }