1   package org.seasar.cubby.tags;
2   
3   import java.util.HashMap;
4   
5   import javax.servlet.jsp.PageContext;
6   
7   import org.jdom.Element;
8   
9   public class FormTagTest extends JspTagTestCase {
10  
11  	FormTag tag;
12  	
13  	@Override
14  	protected void setUp() throws Exception {
15  		super.setUp();
16  		tag = new FormTag();
17  		setupBodyTag(tag);
18  		context.setAttribute("fieldErrors", new HashMap<String, String>(), PageContext.REQUEST_SCOPE);
19  	}
20  
21  	public void testDoTag1() throws Exception {
22  		FormDto form = new FormDto();
23  		form.setStringField("value1");
24  		tag.setValue(form);
25  		tag.setDynamicAttribute(null, "action", "/todo/save");
26  		tag.doStartTag();
27  		tag.doEndTag();
28  
29  		Element element = getResultAsElementFromContext();
30  		String message = "フォームオブジェクトが指定";
31  		assertEquals(message, 1, element.getAttributes().size());
32  		assertEquals(message, "/todo/save", element.getAttributeValue("action"));
33  		assertNull("フォームオブジェクトは除去されていること", context.findAttribute("__form"));
34  //		assertEquals("フォームオブジェクトが指定",
35  //				"<form action=\"/todo/save\" >\n</form>\n", context.getResult());
36  	}
37  
38  	public void testDoTag2() throws Exception {
39  		FormDto form = new FormDto();
40  		form.setStringField("value1");
41  		tag.setValue(form);
42  		tag.setDynamicAttribute(null, "action", "/todo/save");
43  		TextareaTag textareaTag = new TextareaTag();
44  		setupSimpleTag(textareaTag);
45  		textareaTag.setDynamicAttribute(null, "name", "stringField");
46  		jspBody.addChildTag(textareaTag);
47  		tag.doStartTag();
48  		textareaTag.doTag();
49  		tag.doEndTag();
50  
51  		Element element = getResultAsElementFromContext();
52  		String message = "フォームオブジェクトが指定、子要素がある場合";
53  		assertEquals(message, 1, element.getAttributes().size());
54  		assertEquals(message, "/todo/save", element.getAttributeValue("action"));
55  		assertEquals(message, 1, element.getChildren().size());
56  		Element child = element.getChild("textarea");
57  		assertEquals(message, 1, child.getAttributes().size());
58  		assertEquals(message, "stringField", child.getAttributeValue("name"));
59  		assertEquals(message, "value1", child.getValue());
60  //		assertEquals("フォームオブジェクトが指定、子要素がある場合",
61  //				"<form action=\"/todo/save\" >\n" +
62  //				"<textarea name=\"stringField\" >value1</textarea>\n" +
63  //				"</form>\n", context.getResult());
64  	}
65  	public void testDoTagEmptyBody() throws Exception {
66  		FormDto form = new FormDto();
67  		form.setStringField("value1");
68  		tag.setValue(form);
69  		tag.setDynamicAttribute(null, "action", "/todo/save");
70  		tag.doStartTag();
71  		tag.doEndTag();
72  
73  		Element element = getResultAsElementFromContext();
74  		String message = "Bodyが空の場合";
75  		assertEquals(message, 1, element.getAttributes().size());
76  		assertEquals(message, "/todo/save", element.getAttributeValue("action"));
77  //		assertEquals("Bodyが空の場合",
78  //				"<form action=\"/todo/save\" >\n</form>\n", context.getResult());
79  	}
80  }