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