1 package com.atlassian.plugins.codegen.modules.common;
2
3 import com.atlassian.plugins.codegen.AbstractCodegenTestCase;
4
5 import org.dom4j.Element;
6 import org.junit.Before;
7 import org.junit.Test;
8
9 import static org.junit.Assert.assertEquals;
10 import static org.junit.Assert.assertNull;
11
12
13
14
15 public class DownloadablePluginResourceTest extends AbstractCodegenTestCase<DownloadablePluginResourceProperties>
16 {
17 protected Resource cssResource;
18 protected Resource cssNamePatternResource;
19
20 @Before
21 public void setup()
22 {
23 setCreator(new DownloadablePluginResourceModuleCreator());
24
25 cssResource = new Resource();
26 cssResource.setName("style.css");
27 cssResource.setLocation("com/example/plugin/style.css");
28 cssResource.setType("download");
29
30 cssNamePatternResource = new Resource();
31 cssNamePatternResource.setNamePattern("*.css");
32 cssNamePatternResource.setLocation("com/example/plugin");
33 cssNamePatternResource.setType("download");
34
35 setProps(new DownloadablePluginResourceProperties(cssResource));
36 }
37
38 @Test
39 public void resourceIsAdded() throws Exception
40 {
41 getGeneratedModule();
42 }
43
44 @Test
45 public void resourceHasName() throws Exception
46 {
47 assertEquals("style.css", getGeneratedModule().attributeValue("name"));
48 }
49
50 @Test
51 public void resourceHasLocation() throws Exception
52 {
53 assertEquals("com/example/plugin/style.css", getGeneratedModule().attributeValue("location"));
54 }
55
56 @Test
57 public void resourceHasType() throws Exception
58 {
59 assertEquals("download", getGeneratedModule().attributeValue("type"));
60 }
61
62 @Test
63 public void namePatternResourceAdded() throws Exception
64 {
65 setProps(new DownloadablePluginResourceProperties(cssNamePatternResource));
66
67 getGeneratedModule();
68 }
69
70 @Test
71 public void namePatternResourceHasNamePattern() throws Exception
72 {
73 setProps(new DownloadablePluginResourceProperties(cssNamePatternResource));
74
75 assertEquals("*.css", getGeneratedModule().attributeValue("namePattern"));
76 }
77
78 @Test
79 public void namePatternResourceHasLocation() throws Exception
80 {
81 setProps(new DownloadablePluginResourceProperties(cssNamePatternResource));
82
83 assertEquals("com/example/plugin", getGeneratedModule().attributeValue("location"));
84 }
85
86 @Test
87 public void namePatternResourceHasType() throws Exception
88 {
89 setProps(new DownloadablePluginResourceProperties(cssNamePatternResource));
90
91 assertEquals("download", getGeneratedModule().attributeValue("type"));
92 }
93
94 @Test
95 public void resourceNameChosenOverPattern() throws Exception
96 {
97 cssResource.setNamePattern("*.css");
98
99 assertNull(getGeneratedModule().attributeValue("namePattern"));
100 }
101
102 @Test
103 public void resourceParamHasName() throws Exception
104 {
105 cssResource.getParams().put("content-type", "text/css");
106
107 assertEquals("content-type", getGeneratedModule().selectSingleNode("param/@name").getText());
108 }
109
110 @Test
111 public void resourceParamHasValue() throws Exception
112 {
113 cssResource.getParams().put("content-type", "text/css");
114
115 assertEquals("text/css", getGeneratedModule().selectSingleNode("param/@value").getText());
116 }
117
118 @Test
119 public void secondResourceParamAdded() throws Exception
120 {
121 cssResource.getParams().put("content-type", "text/css");
122 cssResource.getParams().put("awesome", "me");
123
124 assertEquals("me", getGeneratedModule().selectSingleNode("param[@name='awesome']/@value").getText());
125 }
126
127 @Test
128 public void allResourceParamsAdded() throws Exception
129 {
130 cssResource.getParams().put("content-type", "text/css");
131 cssResource.getParams().put("awesome", "me");
132
133 assertEquals(2, getGeneratedModule().selectNodes("param").size());
134 }
135
136 protected Element getGeneratedModule() throws Exception
137 {
138 return getGeneratedModule("resource");
139 }
140 }