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