1   package org.seasar.cubby.tags;
2   
3   import java.util.Date;
4   import java.util.HashMap;
5   
6   import javax.servlet.jsp.JspException;
7   import javax.servlet.jsp.PageContext;
8   
9   import org.jdom.Element;
10  import org.seasar.framework.util.StringUtil;
11  
12  public class InputTagTest extends JspTagTestCase {
13  
14  	InputTag tag;
15  	
16  	@Override
17  	protected void setUp() throws Exception {
18  		super.setUp();
19  		tag = new InputTag();
20  		setupSimpleTag(tag);
21  		context.setAttribute("fieldErrors", new HashMap<String, String>(), PageContext.REQUEST_SCOPE);
22  	}
23  
24  	public void testDoTagCheckboxValueRequred() throws Exception {
25  		tag.setDynamicAttribute(null, "name", "stringField");
26  		tag.setDynamicAttribute(null, "checkedValue", "value1");
27  		tag.setType("checkbox");
28  		try {
29  			tag.doTag();
30  			fail("checkboxではvalue属性は必須");
31  		} catch (JspException ex) {
32  			assertTrue(true);
33  		}
34  	}
35  	
36  	public void testDoTagCheckbox1() throws Exception {
37  		tag.setDynamicAttribute(null, "name", "stringField");
38  		tag.setDynamicAttribute(null, "value", "value1");
39  		tag.setDynamicAttribute(null, "checkedValue", "value1");
40  		tag.setType("checkbox");
41  		tag.doTag();
42  
43  		Element element = getResultAsElementFromContext();
44  		String message = "valueが指定";
45  		assertTrue(message, StringUtil.isEmpty(element.getValue()));
46  		assertEquals(message, 4, element.getAttributes().size());
47  		assertEquals(message, "checkbox", element.getAttributeValue("type"));
48  		assertEquals(message, "value1", element.getAttributeValue("value"));
49  		assertEquals(message, "stringField", element.getAttributeValue("name"));
50  		assertEquals(message, "true", element.getAttributeValue("checked"));
51  //		assertEquals("valueが指定",
52  //				"<input type=\"checkbox\" value=\"value1\" name=\"stringField\"  checked=\"true\"/>\n", context.getResult());
53  	}
54  
55  	public void testDoTagCheckbox2() throws Exception {
56  		tag.setDynamicAttribute(null, "name", "stringField");
57  		tag.setDynamicAttribute(null, "value", "value1");
58  		tag.setDynamicAttribute(null, "checkedValue", "value2");
59  		tag.setType("checkbox");
60  		tag.doTag();
61  
62  		Element element = getResultAsElementFromContext();
63  		String message = "valueが指定";
64  		assertTrue(message, StringUtil.isEmpty(element.getValue()));
65  		assertEquals(message, 3, element.getAttributes().size());
66  		assertEquals(message, "checkbox", element.getAttributeValue("type"));
67  		assertEquals(message, "value1", element.getAttributeValue("value"));
68  		assertEquals(message, "stringField", element.getAttributeValue("name"));
69  //		assertEquals("valueが指定",
70  //				"<input type=\"checkbox\" value=\"value1\" name=\"stringField\"  />\n", context.getResult());
71  	}
72  
73  	public void testDoTagCheckbox3() throws Exception {
74  		FormDto form = new FormDto();
75  		form.setStringField("value1");
76  		context.setAttribute("__form", form, PageContext.REQUEST_SCOPE);
77  		tag.setDynamicAttribute(null, "name", "stringField");
78  		tag.setDynamicAttribute(null, "value", "value1");
79  		tag.setType("checkbox");
80  		tag.doTag();
81  
82  		Element element = getResultAsElementFromContext();
83  		String message = "valueが指定";
84  		assertTrue(message, StringUtil.isEmpty(element.getValue()));
85  		assertEquals(message, 4, element.getAttributes().size());
86  		assertEquals(message, "checkbox", element.getAttributeValue("type"));
87  		assertEquals(message, "value1", element.getAttributeValue("value"));
88  		assertEquals(message, "stringField", element.getAttributeValue("name"));
89  		assertEquals(message, "true", element.getAttributeValue("checked"));
90  //		assertEquals("valueが指定",
91  //				"<input type=\"checkbox\" value=\"value1\" name=\"stringField\"  checked=\"true\"/>\n", context.getResult());
92  	}
93  
94  	public void testDoTagCheckbox4() throws Exception {
95  		FormDto form = new FormDto();
96  		form.setStringField("value2");
97  		context.setAttribute("__form", form, PageContext.REQUEST_SCOPE);
98  		tag.setDynamicAttribute(null, "name", "stringField");
99  		tag.setDynamicAttribute(null, "value", "value1");
100 		tag.setType("checkbox");
101 		tag.doTag();
102 
103 		Element element = getResultAsElementFromContext();
104 		String message = "valueが指定";
105 		assertTrue(message, StringUtil.isEmpty(element.getValue()));
106 		assertEquals(message, 3, element.getAttributes().size());
107 		assertEquals(message, "checkbox", element.getAttributeValue("type"));
108 		assertEquals(message, "value1", element.getAttributeValue("value"));
109 		assertEquals(message, "stringField", element.getAttributeValue("name"));
110 //		assertEquals("valueが指定",
111 //				"<input type=\"checkbox\" value=\"value1\" name=\"stringField\"  />\n", context.getResult());
112 	}
113 
114 	public void testDoTagRadioValueRequred() throws Exception {
115 		tag.setDynamicAttribute(null, "name", "stringField");
116 		tag.setDynamicAttribute(null, "checkedValue", "value1");
117 		tag.setType("radio");
118 		try {
119 			tag.doTag();
120 			fail("checkboxではvalue属性は必須");
121 		} catch (JspException ex) {
122 			assertTrue(true);
123 		}
124 	}
125 
126 	public void testDoTagRadio1() throws Exception {
127 		tag.setDynamicAttribute(null, "name", "stringField");
128 		tag.setDynamicAttribute(null, "value", "value1");
129 		tag.setDynamicAttribute(null, "checkedValue", "value1");
130 		tag.setType("radio");
131 		tag.doTag();
132 
133 		Element element = getResultAsElementFromContext();
134 		String message = "valueが指定";
135 		assertTrue(message, StringUtil.isEmpty(element.getValue()));
136 		assertEquals(message, 4, element.getAttributes().size());
137 		assertEquals(message, "radio", element.getAttributeValue("type"));
138 		assertEquals(message, "value1", element.getAttributeValue("value"));
139 		assertEquals(message, "stringField", element.getAttributeValue("name"));
140 		assertEquals(message, "true", element.getAttributeValue("checked"));
141 //		assertEquals("valueが指定",
142 //				"<input type=\"checkbox\" value=\"value1\" name=\"stringField\"  checked=\"true\"/>\n", context.getResult());
143 	}
144 
145 	public void testDoTagRadio2() throws Exception {
146 		tag.setDynamicAttribute(null, "name", "stringField");
147 		tag.setDynamicAttribute(null, "value", "value1");
148 		tag.setDynamicAttribute(null, "checkedValue", "value2");
149 		tag.setType("radio");
150 		tag.doTag();
151 
152 		Element element = getResultAsElementFromContext();
153 		String message = "valueが指定";
154 		assertTrue(message, StringUtil.isEmpty(element.getValue()));
155 		assertEquals(message, 3, element.getAttributes().size());
156 		assertEquals(message, "radio", element.getAttributeValue("type"));
157 		assertEquals(message, "value1", element.getAttributeValue("value"));
158 		assertEquals(message, "stringField", element.getAttributeValue("name"));
159 //		assertEquals("valueが指定",
160 //				"<input type=\"checkbox\" value=\"value1\" name=\"stringField\"  />\n", context.getResult());
161 	}
162 
163 	public void testDoTagRadio3() throws Exception {
164 		FormDto form = new FormDto();
165 		form.setStringField("value1");
166 		context.setAttribute("__form", form, PageContext.REQUEST_SCOPE);
167 		tag.setDynamicAttribute(null, "name", "stringField");
168 		tag.setDynamicAttribute(null, "value", "value1");
169 		tag.setType("radio");
170 		tag.doTag();
171 
172 		Element element = getResultAsElementFromContext();
173 		String message = "valueが指定";
174 		assertTrue(message, StringUtil.isEmpty(element.getValue()));
175 		assertEquals(message, 4, element.getAttributes().size());
176 		assertEquals(message, "radio", element.getAttributeValue("type"));
177 		assertEquals(message, "value1", element.getAttributeValue("value"));
178 		assertEquals(message, "stringField", element.getAttributeValue("name"));
179 		assertEquals(message, "true", element.getAttributeValue("checked"));
180 //		assertEquals("valueが指定",
181 //				"<input type=\"checkbox\" value=\"value1\" name=\"stringField\"  checked=\"true\"/>\n", context.getResult());
182 	}
183 
184 	public void testDoTagRadio4() throws Exception {
185 		FormDto form = new FormDto();
186 		form.setStringField("value2");
187 		context.setAttribute("__form", form, PageContext.REQUEST_SCOPE);
188 		tag.setDynamicAttribute(null, "name", "stringField");
189 		tag.setDynamicAttribute(null, "value", "value1");
190 		tag.setType("radio");
191 		tag.doTag();
192 
193 		Element element = getResultAsElementFromContext();
194 		String message = "valueが指定";
195 		assertTrue(message, StringUtil.isEmpty(element.getValue()));
196 		assertEquals(message, 3, element.getAttributes().size());
197 		assertEquals(message, "radio", element.getAttributeValue("type"));
198 		assertEquals(message, "value1", element.getAttributeValue("value"));
199 		assertEquals(message, "stringField", element.getAttributeValue("name"));
200 //		assertEquals("valueが指定",
201 //				"<input type=\"checkbox\" value=\"value1\" name=\"stringField\"  />\n", context.getResult());
202 	}
203 
204 	public void testDoTagText1() throws Exception {
205 		tag.setDynamicAttribute(null, "name", "stringField");
206 		tag.setDynamicAttribute(null, "value", "value1");
207 		tag.setType("text");
208 		tag.doTag();
209 
210 		Element element = getResultAsElementFromContext();
211 		String message = "valueが指定";
212 		assertTrue(message, StringUtil.isEmpty(element.getValue()));
213 		assertEquals(message, 3, element.getAttributes().size());
214 		assertEquals(message, "text", element.getAttributeValue("type"));
215 		assertEquals(message, "value1", element.getAttributeValue("value"));
216 		assertEquals(message, "stringField", element.getAttributeValue("name"));
217 //		assertEquals("valueが指定",
218 //				"<input type=\"text\" value=\"value1\" name=\"stringField\" />\n", context.getResult());
219 	}
220 
221 	public void testDoTagText2() throws Exception {
222 		FormDto form = new FormDto();
223 		form.setStringField("value1");
224 		context.setAttribute("__form", form, PageContext.REQUEST_SCOPE);
225 		tag.setDynamicAttribute(null, "name", "stringField");
226 		tag.setDynamicAttribute(null, "value", "value1");
227 		tag.setType("text");
228 		tag.doTag();
229 
230 		Element element = getResultAsElementFromContext();
231 		String message = "valueが指定";
232 		assertTrue(message, StringUtil.isEmpty(element.getValue()));
233 		assertEquals(message, 3, element.getAttributes().size());
234 		assertEquals(message, "text", element.getAttributeValue("type"));
235 		assertEquals(message, "value1", element.getAttributeValue("value"));
236 		assertEquals(message, "stringField", element.getAttributeValue("name"));
237 //		assertEquals("valueが指定",
238 //				"<input type=\"text\" value=\"value1\" name=\"stringField\" />\n", context.getResult());
239 	}
240 
241 	public void testDoTagTextDate() throws Exception {
242 		FormDto form = new FormDto();
243 		form.setStringField("value1");
244 		context.setAttribute("__form", form, PageContext.REQUEST_SCOPE);
245 		tag.setDynamicAttribute(null, "name", "dateField");
246 		tag.setDynamicAttribute(null, "value", new Date());
247 		tag.setType("text");
248 		tag.doTag();
249 
250 		Element element = getResultAsElementFromContext();
251 		String message = "valueが指定";
252 		assertTrue(message, StringUtil.isEmpty(element.getValue()));
253 		assertEquals(message, 3, element.getAttributes().size());
254 		assertEquals(message, "text", element.getAttributeValue("type"));
255 		//assertEquals(message, "value1", element.getAttributeValue("value"));
256 		assertEquals(message, "dateField", element.getAttributeValue("name"));
257 //		assertEquals("valueが指定",
258 //				"<input type=\"text\" value=\"value1\" name=\"stringField\" />\n", context.getResult());
259 	}
260 
261 }