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