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
13
14
15
16 public class UserFormatTest extends AbstractModuleCreatorTestCase<UserFormatProperties>
17 {
18 public UserFormatTest()
19 {
20 super("user-format", new UserFormatModuleCreator());
21 }
22
23 @Before
24 public void setupProps() throws Exception
25 {
26 setProps(new UserFormatProperties(PACKAGE_NAME + ".MyUserFormat"));
27 props.setIncludeExamples(false);
28 props.setTypeKey("my.type.key");
29 props.setTypeName("My Type");
30 }
31
32 @Test
33 public void classFileIsGenerated() throws Exception
34 {
35 getSourceFile(PACKAGE_NAME, "MyUserFormat");
36 }
37
38 @Test
39 public void unitTestFileIsGenerated() throws Exception
40 {
41 getTestSourceFile(TEST_PACKAGE_NAME, "MyUserFormatTest");
42 }
43
44 @Test
45 public void moduleHasDefaultKey() throws Exception
46 {
47 assertEquals("my-user-format",
48 getGeneratedModule().attributeValue("key"));
49 }
50
51 @Test
52 public void moduleHasClass() throws Exception
53 {
54 assertEquals(PACKAGE_NAME + ".MyUserFormat",
55 getGeneratedModule().attributeValue("class"));
56 }
57
58 @Test
59 public void moduleHasTypeKey() throws Exception
60 {
61 assertEquals("my.type.key", getGeneratedModule().selectSingleNode("type/@i18n-name-key").getText());
62 }
63
64 @Test
65 public void moduleHasTypeName() throws Exception
66 {
67 assertEquals("My Type", getGeneratedModule().selectSingleNode("type").getText());
68 }
69
70 @Test
71 public void resourceIsAdded() throws Exception
72 {
73 props.getResources().add(cssResource);
74
75 assertNotNull(getGeneratedModule().selectSingleNode("resource"));
76 }
77
78 @Test
79 public void resourceHasName() throws Exception
80 {
81 props.getResources().add(cssResource);
82
83 assertEquals("style.css", getGeneratedModule().selectSingleNode("resource/@name").getText());
84 }
85
86 @Test
87 public void resourceHasLocation() throws Exception
88 {
89 props.getResources().add(cssResource);
90
91 assertEquals("com/example/plugin/style.css", getGeneratedModule().selectSingleNode("resource/@location").getText());
92 }
93
94 @Test
95 public void resourceHasType() throws Exception
96 {
97 props.getResources().add(cssResource);
98
99 assertEquals("download", getGeneratedModule().selectSingleNode("resource/@type").getText());
100 }
101
102 @Test
103 public void namePatternResourceAdded() throws Exception
104 {
105 props.getResources().add(cssNamePatternResource);
106
107 assertNotNull(getGeneratedModule().selectSingleNode("resource"));
108 }
109
110 @Test
111 public void namePatternResourceHasNamePattern() throws Exception
112 {
113 props.getResources().add(cssNamePatternResource);
114
115 assertEquals("*.css", getGeneratedModule().selectSingleNode("resource/@namePattern").getText());
116 }
117
118 @Test
119 public void namePatternResourceHasLocation() throws Exception
120 {
121 props.getResources().add(cssNamePatternResource);
122
123 assertEquals("com/example/plugin", getGeneratedModule().selectSingleNode("resource/@location").getText());
124 }
125
126 @Test
127 public void namePatternResourceHasType() throws Exception
128 {
129 props.getResources().add(cssNamePatternResource);
130
131 assertEquals("download", getGeneratedModule().selectSingleNode("resource/@type").getText());
132 }
133
134 @Test
135 public void resourceNameChosenOverPattern() throws Exception
136 {
137 cssResource.setNamePattern("*.css");
138 props.getResources().add(cssResource);
139
140 assertNull(getGeneratedModule().selectSingleNode("resource/@namePattern"));
141 }
142
143 @Test
144 public void resourceParamHasName() throws Exception
145 {
146 cssResource.getParams().put("content-type", "text/css");
147 props.getResources().add(cssResource);
148
149 assertEquals("content-type", getGeneratedModule().selectSingleNode("resource/param/@name").getText());
150 }
151
152 @Test
153 public void resourceParamHasValue() throws Exception
154 {
155 cssResource.getParams().put("content-type", "text/css");
156 props.getResources().add(cssResource);
157
158 assertEquals("text/css", getGeneratedModule().selectSingleNode("resource/param/@value").getText());
159 }
160
161 @Test
162 public void secondResourceParamAdded() throws Exception
163 {
164 cssResource.getParams().put("content-type", "text/css");
165 cssResource.getParams().put("awesome", "me");
166 props.getResources().add(cssResource);
167
168 assertEquals("me", getGeneratedModule().selectSingleNode("resource/param[@name='awesome']/@value").getText());
169 }
170
171 @Test
172 public void allResourceParamsAdded() throws Exception
173 {
174 cssResource.getParams().put("content-type", "text/css");
175 cssResource.getParams().put("awesome", "me");
176 props.getResources().add(cssResource);
177
178 assertEquals(2, getGeneratedModule().selectNodes("resource/param").size());
179 }
180
181 @Test
182 public void secondResourceAdded() throws Exception
183 {
184 Resource resource2 = new Resource();
185 resource2.setName("custom.js");
186 resource2.setLocation("com/example/plugin/custom.js");
187 resource2.setType("download");
188
189 props.getResources().add(cssResource);
190 props.getResources().add(resource2);
191
192 assertEquals("com/example/plugin/custom.js",
193 getGeneratedModule().selectSingleNode("resource[@name='custom.js']/@location").getText());
194 }
195
196 @Test
197 public void allResourcesAdded() throws Exception
198 {
199 Resource resource2 = new Resource();
200 resource2.setName("custom.js");
201 resource2.setLocation("com/example/plugin/custom.js");
202 resource2.setType("download");
203
204 props.getResources().add(cssResource);
205 props.getResources().add(resource2);
206
207 assertEquals(2, getGeneratedModule().selectNodes("resource").size());
208 }
209 }