1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.renderkit.html;
20
21 import java.io.StringWriter;
22
23 import javax.faces.component.UISelectItem;
24 import javax.faces.component.behavior.AjaxBehavior;
25 import javax.faces.component.html.HtmlSelectBooleanCheckbox;
26 import javax.faces.component.html.HtmlSelectManyCheckbox;
27
28 import junit.framework.Test;
29 import junit.framework.TestSuite;
30
31 import org.apache.myfaces.test.base.AbstractJsfTestCase;
32 import org.apache.myfaces.test.mock.MockRenderKitFactory;
33 import org.apache.myfaces.test.mock.MockResponseWriter;
34 import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
35 import org.apache.myfaces.test.utils.HtmlRenderedAttr;
36
37
38
39
40
41 public class HtmlCheckboxRendererTest extends AbstractJsfTestCase
42 {
43 private MockResponseWriter writer ;
44 private HtmlSelectManyCheckbox selectManyCheckbox;
45 private HtmlSelectBooleanCheckbox selectBooleanCheckbox;
46
47 public HtmlCheckboxRendererTest(String name)
48 {
49 super(name);
50 }
51
52 public static Test suite() {
53 return new TestSuite(HtmlCheckboxRendererTest.class);
54 }
55
56 public void setUp() throws Exception
57 {
58 super.setUp();
59
60 selectManyCheckbox = new HtmlSelectManyCheckbox();
61 selectBooleanCheckbox = new HtmlSelectBooleanCheckbox();
62
63 writer = new MockResponseWriter(new StringWriter(), null, null);
64 facesContext.setResponseWriter(writer);
65
66 facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
67 facesContext.getRenderKit().addRenderer(
68 selectManyCheckbox.getFamily(),
69 selectManyCheckbox.getRendererType(),
70 new HtmlCheckboxRenderer());
71 facesContext.getRenderKit().addRenderer(
72 selectBooleanCheckbox.getFamily(),
73 selectBooleanCheckbox.getRendererType(),
74 new HtmlCheckboxRenderer());
75
76 facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
77 }
78
79 public void tearDown() throws Exception
80 {
81 super.tearDown();
82 selectManyCheckbox = null;
83 selectBooleanCheckbox = null;
84 writer = null;
85 }
86
87 public void testSelectManyHtmlPropertyPassTru() throws Exception
88 {
89 HtmlRenderedAttr[] attrs = {
90
91 new HtmlRenderedAttr("accesskey"),
92
93 new HtmlRenderedAttr("dir"),
94 new HtmlRenderedAttr("lang"),
95 new HtmlRenderedAttr("title"),
96
97 new HtmlRenderedAttr("onfocus"),
98 new HtmlRenderedAttr("onblur"),
99
100 new HtmlRenderedAttr("onchange"),
101 new HtmlRenderedAttr("onselect"),
102
103 new HtmlRenderedAttr("onclick"),
104 new HtmlRenderedAttr("ondblclick"),
105 new HtmlRenderedAttr("onkeydown"),
106 new HtmlRenderedAttr("onkeypress"),
107 new HtmlRenderedAttr("onkeyup"),
108 new HtmlRenderedAttr("onmousedown"),
109 new HtmlRenderedAttr("onmousemove"),
110 new HtmlRenderedAttr("onmouseout"),
111 new HtmlRenderedAttr("onmouseover"),
112 new HtmlRenderedAttr("onmouseup"),
113
114 new HtmlRenderedAttr("style", 1),
115 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"styleClass\"", 1),
116
117 new HtmlRenderedAttr("tabindex")
118 };
119
120 UISelectItem item = new UISelectItem();
121 item.setItemLabel("mars");
122 item.setItemValue("mars");
123 selectManyCheckbox.getChildren().add(item);
124
125 HtmlCheckAttributesUtil.checkRenderedAttributes(
126 selectManyCheckbox, facesContext, writer, attrs);
127 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
128 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
129 }
130 }
131
132 public void testSelectBooleanHtmlPropertyPasstru() throws Exception
133 {
134 HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateBasicAttrs();
135
136 selectBooleanCheckbox.setSelected(true);
137
138 HtmlCheckAttributesUtil.checkRenderedAttributes(
139 selectBooleanCheckbox, facesContext, writer, attrs);
140 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
141 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
142 }
143
144 }
145
146
147
148
149 public void testClientBehaviorHolderRendersIdAndNameSelectBooleanCheckbox()
150 {
151 selectBooleanCheckbox.addClientBehavior("focus", new AjaxBehavior());
152 try
153 {
154 selectBooleanCheckbox.encodeAll(facesContext);
155 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
156 assertTrue(output.matches(".+id=\".+\".+"));
157 assertTrue(output.matches(".+name=\".+\".+"));
158 }
159 catch (Exception e)
160 {
161 fail(e.getMessage());
162 }
163
164 }
165
166
167
168
169 public void testClientBehaviorHolderRendersIdAndNameSelectManyCheckbox()
170 {
171 UISelectItem item1 = new UISelectItem();
172 item1.setItemLabel("#1");
173 item1.setItemValue("#1");
174
175 UISelectItem item2 = new UISelectItem();
176 item2.setItemLabel("#2");
177 item2.setItemValue("#2");
178
179 selectManyCheckbox.addClientBehavior("focus", new AjaxBehavior());
180 try
181 {
182 selectManyCheckbox.getChildren().add(item1);
183 selectManyCheckbox.getChildren().add(item2);
184 selectManyCheckbox.encodeAll(facesContext);
185 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
186 assertTrue(output.matches(".+id=\".+\".+"));
187 assertTrue(output.matches(".+name=\".+\".+"));
188 }
189 catch (Exception e)
190 {
191 fail(e.getMessage());
192 }
193
194 }
195 }