1 package com.atlassian.plugins.codegen.modules.jira;
2
3 import com.atlassian.plugins.codegen.AbstractModuleCreatorTestCase;
4 import com.atlassian.plugins.codegen.modules.common.Resource;
5
6 import org.junit.Before;
7 import org.junit.Test;
8
9 import static junit.framework.Assert.assertEquals;
10 import static junit.framework.Assert.assertNotNull;
11 import static org.junit.Assert.assertNull;
12 import static org.junit.Assert.assertTrue;
13
14
15
16
17 public class CustomFieldSearcherTest extends AbstractModuleCreatorTestCase<CustomFieldSearcherProperties>
18 {
19
20 public CustomFieldSearcherTest()
21 {
22 super("customfield-searcher", new CustomFieldSearcherModuleCreator());
23 }
24
25 @Before
26 public void setupProps() throws Exception
27 {
28 setProps(new CustomFieldSearcherProperties(PACKAGE_NAME + ".MyCustomFieldSearcher"));
29 props.setIncludeExamples(false);
30 }
31
32 @Test
33 public void customClassFileIsGenerated() throws Exception
34 {
35 props.setGenerateClass(true);
36
37 getSourceFile(PACKAGE_NAME, "MyCustomFieldSearcher");
38 }
39
40 @Test
41 public void customUnitTestFileIsGenerated() throws Exception
42 {
43 props.setGenerateClass(true);
44
45 getTestSourceFile(PACKAGE_NAME, "MyCustomFieldSearcherTest");
46 }
47
48 @Test
49 public void genericClassFilesAreNotGenerated() throws Exception
50 {
51 props.setGenerateClass(false);
52
53 assertTrue(getChangesetForModule().getSourceFiles().isEmpty());
54 }
55
56 @Test
57 public void moduleHasDefaultKey() throws Exception
58 {
59 assertEquals("my-custom-field-searcher",
60 getGeneratedModule().attributeValue("key"));
61 }
62
63 @Test
64 public void moduleHasClass() throws Exception
65 {
66 assertEquals(PACKAGE_NAME + ".MyCustomFieldSearcher",
67 getGeneratedModule().attributeValue("class"));
68 }
69
70 @Test
71 public void moduleHasValidCustomFieldPackage() throws Exception
72 {
73 props.setValidCustomFieldPackage("com.atlassian.customfields");
74 props.setValidCustomFieldKey("some-searcher");
75
76 assertEquals("com.atlassian.customfields", getGeneratedModule().selectSingleNode("valid-customfield-type/@package").getText());
77 }
78
79 @Test
80 public void moduleHasValidCustomFieldKey() throws Exception
81 {
82 props.setValidCustomFieldPackage("com.atlassian.customfields");
83 props.setValidCustomFieldKey("some-searcher");
84
85 assertEquals("some-searcher", getGeneratedModule().selectSingleNode("valid-customfield-type/@key").getText());
86 }
87
88 @Test
89 public void resourceIsAdded() throws Exception
90 {
91 props.getResources().add(cssResource);
92
93 assertNotNull(getGeneratedModule().selectSingleNode("resource"));
94 }
95
96 @Test
97 public void resourceHasName() throws Exception
98 {
99 props.getResources().add(cssResource);
100
101 assertEquals("style.css", getGeneratedModule().selectSingleNode("resource/@name").getText());
102 }
103
104 @Test
105 public void resourceHasLocation() throws Exception
106 {
107 props.getResources().add(cssResource);
108
109 assertEquals("com/example/plugin/style.css", getGeneratedModule().selectSingleNode("resource/@location").getText());
110 }
111
112 @Test
113 public void resourceHasType() throws Exception
114 {
115 props.getResources().add(cssResource);
116
117 assertEquals("download", getGeneratedModule().selectSingleNode("resource/@type").getText());
118 }
119
120 @Test
121 public void namePatternResourceAdded() throws Exception
122 {
123 props.getResources().add(cssNamePatternResource);
124
125 assertNotNull(getGeneratedModule().selectSingleNode("resource"));
126 }
127
128 @Test
129 public void namePatternResourceHasNamePattern() throws Exception
130 {
131 props.getResources().add(cssNamePatternResource);
132
133 assertEquals("*.css", getGeneratedModule().selectSingleNode("resource/@namePattern").getText());
134 }
135
136 @Test
137 public void namePatternResourceHasLocation() throws Exception
138 {
139 props.getResources().add(cssNamePatternResource);
140
141 assertEquals("com/example/plugin", getGeneratedModule().selectSingleNode("resource/@location").getText());
142 }
143
144 @Test
145 public void namePatternResourceHasType() throws Exception
146 {
147 props.getResources().add(cssNamePatternResource);
148
149 assertEquals("download", getGeneratedModule().selectSingleNode("resource/@type").getText());
150 }
151
152 @Test
153 public void resourceNameChosenOverPattern() throws Exception
154 {
155 cssResource.setNamePattern("*.css");
156 props.getResources().add(cssResource);
157
158 assertNull(getGeneratedModule().selectSingleNode("resource/@namePattern"));
159 }
160
161 @Test
162 public void resourceParamHasName() throws Exception
163 {
164 cssResource.getParams().put("content-type", "text/css");
165 props.getResources().add(cssResource);
166
167 assertEquals("content-type", getGeneratedModule().selectSingleNode("resource/param/@name").getText());
168 }
169
170 @Test
171 public void resourceParamHasValue() throws Exception
172 {
173 cssResource.getParams().put("content-type", "text/css");
174 props.getResources().add(cssResource);
175
176 assertEquals("text/css", getGeneratedModule().selectSingleNode("resource/param/@value").getText());
177 }
178
179 @Test
180 public void secondResourceParamAdded() throws Exception
181 {
182 cssResource.getParams().put("content-type", "text/css");
183 cssResource.getParams().put("awesome", "me");
184 props.getResources().add(cssResource);
185
186 assertEquals("me", getGeneratedModule().selectSingleNode("resource/param[@name='awesome']/@value").getText());
187 }
188
189 @Test
190 public void allResourceParamsAdded() throws Exception
191 {
192 cssResource.getParams().put("content-type", "text/css");
193 cssResource.getParams().put("awesome", "me");
194 props.getResources().add(cssResource);
195
196 assertEquals(2, getGeneratedModule().selectNodes("resource/param").size());
197 }
198
199 @Test
200 public void secondResourceAdded() throws Exception
201 {
202 Resource resource2 = new Resource();
203 resource2.setName("custom.js");
204 resource2.setLocation("com/example/plugin/custom.js");
205 resource2.setType("download");
206
207 props.getResources().add(cssResource);
208 props.getResources().add(resource2);
209
210 assertEquals("com/example/plugin/custom.js",
211 getGeneratedModule().selectSingleNode("resource[@name='custom.js']/@location").getText());
212 }
213
214 @Test
215 public void allResourcesAdded() throws Exception
216 {
217 Resource resource2 = new Resource();
218 resource2.setName("custom.js");
219 resource2.setLocation("com/example/plugin/custom.js");
220 resource2.setType("download");
221
222 props.getResources().add(cssResource);
223 props.getResources().add(resource2);
224
225 assertEquals(2, getGeneratedModule().selectNodes("resource").size());
226 }
227 }