1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.seasar.cubby.tags;
18
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertTrue;
21 import static org.junit.Assert.fail;
22
23 import java.util.HashMap;
24 import java.util.LinkedHashMap;
25 import java.util.Map;
26
27 import org.jdom.Element;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.seasar.cubby.internal.util.StringUtils;
31
32 public class SelectTagMapTest extends SimpleTagTestCase {
33
34 private SelectTag tag;
35
36 private Map<Integer, String> items = new LinkedHashMap<Integer, String>();
37
38 @Before
39 public void setUp() throws Exception {
40 tag = new SelectTag();
41 setupSimpleTag(tag);
42 setupErrors(context);
43 items.put(1, "name1");
44 items.put(2, "name2");
45 items.put(3, "name3");
46 }
47
48 @Test
49 public void doTag1() throws Exception {
50 Map<String, String[]> map = new HashMap<String, String[]>();
51 map.put("stringField", new String[] { "1" });
52 tag.setParent(new MockFormTag(map));
53 tag.setName("stringField");
54 tag.setDynamicAttribute(null, "id", "stringField");
55 tag.setItems(items);
56 tag.doTag();
57
58 Element element = getResultAsElementFromContext();
59 String message = "基本";
60 assertEquals(message, 2, element.getAttributes().size());
61 assertEquals(message, "stringField", element.getAttributeValue("name"));
62 assertEquals(message, "stringField", element.getAttributeValue("id"));
63 assertEquals(message, 4, element.getChildren().size());
64 for (Object o : element.getChildren("option")) {
65 Element child = (Element) o;
66 String value = child.getValue();
67 if (StringUtils.isEmpty(value)) {
68 assertEquals(message, 1, child.getAttributes().size());
69 assertTrue(message, StringUtils.isEmpty(child
70 .getAttributeValue("value")));
71 } else if ("name1".equals(value)) {
72 assertEquals(message, 2, child.getAttributes().size());
73 assertEquals(message, "1", child.getAttributeValue("value"));
74 assertEquals(message, "selected", child
75 .getAttributeValue("selected"));
76 } else if ("name2".equals(value)) {
77 assertEquals(message, 1, child.getAttributes().size());
78 assertEquals(message, "2", child.getAttributeValue("value"));
79 } else if ("name3".equals(value)) {
80 assertEquals(message, 1, child.getAttributes().size());
81 assertEquals(message, "3", child.getAttributeValue("value"));
82 } else {
83 fail(message);
84 }
85 }
86
87
88
89
90
91
92
93 }
94
95 @Test
96 public void doTag2() throws Exception {
97 Map<String, String[]> map = new HashMap<String, String[]>();
98 map.put("integerArrayField", new String[] { "1", "3" });
99 tag.setParent(new MockFormTag(map));
100 tag.setName("integerArrayField");
101 tag.setDynamicAttribute(null, "size", "5");
102 tag.setItems(items);
103 tag.doTag();
104
105 Element element = getResultAsElementFromContext();
106 String message = "selectedの対象が2つ";
107 assertEquals(message, 2, element.getAttributes().size());
108 assertEquals(message, "integerArrayField", element
109 .getAttributeValue("name"));
110 assertEquals(message, "5", element.getAttributeValue("size"));
111 assertEquals(message, 4, element.getChildren().size());
112 for (Object o : element.getChildren("option")) {
113 Element child = (Element) o;
114 String value = child.getValue();
115 if (StringUtils.isEmpty(value)) {
116 assertEquals(message, 1, child.getAttributes().size());
117 assertTrue(message, StringUtils.isEmpty(child
118 .getAttributeValue("value")));
119 } else if ("name1".equals(value)) {
120 assertEquals(message, 2, child.getAttributes().size());
121 assertEquals(message, "1", child.getAttributeValue("value"));
122 assertEquals(message, "selected", child
123 .getAttributeValue("selected"));
124 } else if ("name2".equals(value)) {
125 assertEquals(message, 1, child.getAttributes().size());
126 assertEquals(message, "2", child.getAttributeValue("value"));
127 } else if ("name3".equals(value)) {
128 assertEquals(message, 2, child.getAttributes().size());
129 assertEquals(message, "3", child.getAttributeValue("value"));
130 assertEquals(message, "selected", child
131 .getAttributeValue("selected"));
132 } else {
133 fail(message);
134 }
135 }
136
137
138
139
140
141
142
143 }
144
145 @Test
146 public void doTag4() throws Exception {
147 Map<String, String[]> map = new HashMap<String, String[]>();
148 map.put("stringField", new String[] { "1" });
149 tag.setParent(new MockFormTag(map));
150 tag.setName("stringField");
151 tag.setItems(items);
152 tag.setEmptyOption(false);
153 tag.doTag();
154
155 Element element = getResultAsElementFromContext();
156 String message = "emptyOption=false";
157 assertEquals(message, 1, element.getAttributes().size());
158 assertEquals(message, "stringField", element.getAttributeValue("name"));
159 assertEquals(message, 3, element.getChildren().size());
160 for (Object o : element.getChildren("option")) {
161 Element child = (Element) o;
162 String value = child.getValue();
163 if ("name1".equals(value)) {
164 assertEquals(message, 2, child.getAttributes().size());
165 assertEquals(message, "1", child.getAttributeValue("value"));
166 assertEquals(message, "selected", child
167 .getAttributeValue("selected"));
168 } else if ("name2".equals(value)) {
169 assertEquals(message, 1, child.getAttributes().size());
170 assertEquals(message, "2", child.getAttributeValue("value"));
171 } else if ("name3".equals(value)) {
172 assertEquals(message, 1, child.getAttributes().size());
173 assertEquals(message, "3", child.getAttributeValue("value"));
174 } else {
175 fail(message);
176 }
177 }
178
179
180
181
182
183
184 }
185
186 @Test
187 public void doTag5() throws Exception {
188 Map<String, String[]> map = new HashMap<String, String[]>();
189 map.put("stringField", new String[] { "1" });
190 tag.setParent(new MockFormTag(map));
191 tag.setName("stringField");
192 tag.setItems(items);
193 tag.setEmptyOptionLabel("empty label");
194 tag.doTag();
195
196 Element element = getResultAsElementFromContext();
197 String message = "emptyOption=true, emptyOptionLabel=empty label";
198 assertEquals(message, 1, element.getAttributes().size());
199 assertEquals(message, "stringField", element.getAttributeValue("name"));
200 assertEquals(message, 4, element.getChildren().size());
201 for (Object o : element.getChildren("option")) {
202 Element child = (Element) o;
203 String value = child.getValue();
204 if ("empty label".equals(value)) {
205 assertEquals(message, 1, child.getAttributes().size());
206 assertTrue(message, StringUtils.isEmpty(child
207 .getAttributeValue("value")));
208 } else if ("name1".equals(value)) {
209 assertEquals(message, 2, child.getAttributes().size());
210 assertEquals(message, "1", child.getAttributeValue("value"));
211 assertEquals(message, "selected", child
212 .getAttributeValue("selected"));
213 } else if ("name2".equals(value)) {
214 assertEquals(message, 1, child.getAttributes().size());
215 assertEquals(message, "2", child.getAttributeValue("value"));
216 } else if ("name3".equals(value)) {
217 assertEquals(message, 1, child.getAttributes().size());
218 assertEquals(message, "3", child.getAttributeValue("value"));
219 } else {
220 fail(message);
221 }
222 }
223
224
225
226
227
228
229
230 }
231
232 @Test
233 public void doTag11() throws Exception {
234 Map<String, String[]> map = new HashMap<String, String[]>();
235 map.put("stringField", new String[] { "1" });
236 tag.setParent(new MockFormTag(map));
237 tag.setName("stringField");
238 tag.setDynamicAttribute(null, "id", "stringField");
239 tag.setItems(items);
240 tag.setLabelProperty("name");
241 tag.doTag();
242
243 Element element = getResultAsElementFromContext();
244 String message = "labelProperty設定";
245 assertEquals(message, 2, element.getAttributes().size());
246 assertEquals(message, "stringField", element.getAttributeValue("name"));
247 assertEquals(message, "stringField", element.getAttributeValue("id"));
248 assertEquals(message, 4, element.getChildren().size());
249 for (Object o : element.getChildren("option")) {
250 Element child = (Element) o;
251 String value = child.getValue();
252 if (StringUtils.isEmpty(value)) {
253 assertEquals(message, 1, child.getAttributes().size());
254 assertTrue(message, StringUtils.isEmpty(child
255 .getAttributeValue("value")));
256 } else if ("name1".equals(value)) {
257 assertEquals(message, 2, child.getAttributes().size());
258 assertEquals(message, "1", child.getAttributeValue("value"));
259 assertEquals(message, "selected", child
260 .getAttributeValue("selected"));
261 } else if ("name2".equals(value)) {
262 assertEquals(message, 1, child.getAttributes().size());
263 assertEquals(message, "2", child.getAttributeValue("value"));
264 } else if ("name3".equals(value)) {
265 assertEquals(message, 1, child.getAttributes().size());
266 assertEquals(message, "3", child.getAttributeValue("value"));
267 } else {
268 fail(message);
269 }
270 }
271
272
273
274
275
276
277
278 }
279
280 @Test
281 public void doTag12() throws Exception {
282 Map<String, String[]> map = new HashMap<String, String[]>();
283 map.put("stringField", new String[] { "1" });
284 tag.setParent(new MockFormTag(map));
285 tag.setName("stringField");
286 tag.setDynamicAttribute(null, "id", "stringField");
287 tag.setItems(items);
288 tag.setValueProperty("id");
289 tag.doTag();
290
291 Element element = getResultAsElementFromContext();
292 String message = "valuePropertyを設定";
293 assertEquals(message, 2, element.getAttributes().size());
294 assertEquals(message, "stringField", element.getAttributeValue("name"));
295 assertEquals(message, "stringField", element.getAttributeValue("id"));
296 assertEquals(message, 4, element.getChildren().size());
297 for (Object o : element.getChildren("option")) {
298 Element child = (Element) o;
299 String value = child.getValue();
300 if (StringUtils.isEmpty(value)) {
301 assertEquals(message, 1, child.getAttributes().size());
302 assertTrue(message, StringUtils.isEmpty(child
303 .getAttributeValue("value")));
304 } else if ("name1".equals(value)) {
305 assertEquals(message, 2, child.getAttributes().size());
306 assertEquals(message, "1", child.getAttributeValue("value"));
307 assertEquals(message, "selected", child
308 .getAttributeValue("selected"));
309 } else if ("name2".equals(value)) {
310 assertEquals(message, 1, child.getAttributes().size());
311 assertEquals(message, "2", child.getAttributeValue("value"));
312 } else if ("name3".equals(value)) {
313 assertEquals(message, 1, child.getAttributes().size());
314 assertEquals(message, "3", child.getAttributeValue("value"));
315 } else {
316 fail(message);
317 }
318 }
319
320
321
322
323
324
325
326 }
327
328 @Test
329 public void doTag13() throws Exception {
330 Map<String, String[]> map = new HashMap<String, String[]>();
331 map.put("stringField", new String[] { "1" });
332 tag.setParent(new MockFormTag(map));
333 tag.setName("stringField");
334 tag.setDynamicAttribute(null, "id", "stringField");
335 tag.setItems(items);
336 tag.setValueProperty("id");
337 tag.setLabelProperty("name");
338 tag.doTag();
339
340 Element element = getResultAsElementFromContext();
341 String message = "valuePropertyとlabelPropertyを設定";
342 assertEquals(message, 2, element.getAttributes().size());
343 assertEquals(message, "stringField", element.getAttributeValue("name"));
344 assertEquals(message, "stringField", element.getAttributeValue("id"));
345 assertEquals(message, 4, element.getChildren().size());
346 for (Object o : element.getChildren("option")) {
347 Element child = (Element) o;
348 String value = child.getValue();
349 if (StringUtils.isEmpty(value)) {
350 assertEquals(message, 1, child.getAttributes().size());
351 assertTrue(message, StringUtils.isEmpty(child
352 .getAttributeValue("value")));
353 } else if ("name1".equals(value)) {
354 assertEquals(message, 2, child.getAttributes().size());
355 assertEquals(message, "1", child.getAttributeValue("value"));
356 assertEquals(message, "selected", child
357 .getAttributeValue("selected"));
358 } else if ("name2".equals(value)) {
359 assertEquals(message, 1, child.getAttributes().size());
360 assertEquals(message, "2", child.getAttributeValue("value"));
361 } else if ("name3".equals(value)) {
362 assertEquals(message, 1, child.getAttributes().size());
363 assertEquals(message, "3", child.getAttributeValue("value"));
364 } else {
365 fail(message);
366 }
367 }
368
369
370
371
372
373
374
375 }
376
377 }