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