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 new HtmlRenderedAttr("role"),
97
98 new HtmlRenderedAttr("onfocus"),
99 new HtmlRenderedAttr("onblur"),
100
101 new HtmlRenderedAttr("onchange"),
102 new HtmlRenderedAttr("onselect"),
103
104 new HtmlRenderedAttr("onclick"),
105 new HtmlRenderedAttr("ondblclick"),
106 new HtmlRenderedAttr("onkeydown"),
107 new HtmlRenderedAttr("onkeypress"),
108 new HtmlRenderedAttr("onkeyup"),
109 new HtmlRenderedAttr("onmousedown"),
110 new HtmlRenderedAttr("onmousemove"),
111 new HtmlRenderedAttr("onmouseout"),
112 new HtmlRenderedAttr("onmouseover"),
113 new HtmlRenderedAttr("onmouseup"),
114
115 new HtmlRenderedAttr("style", 1),
116 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"styleClass\"", 1),
117
118 new HtmlRenderedAttr("tabindex")
119 };
120
121 UISelectItem item = new UISelectItem();
122 item.setItemLabel("mars");
123 item.setItemValue("mars");
124 selectManyCheckbox.getChildren().add(item);
125
126 HtmlCheckAttributesUtil.checkRenderedAttributes(
127 selectManyCheckbox, facesContext, writer, attrs);
128 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
129 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
130 }
131 }
132
133 public void testSelectBooleanHtmlPropertyPasstru() throws Exception
134 {
135 HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateBasicAttrs();
136
137 selectBooleanCheckbox.setSelected(true);
138
139 HtmlCheckAttributesUtil.checkRenderedAttributes(
140 selectBooleanCheckbox, facesContext, writer, attrs);
141 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
142 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
143 }
144
145 }
146
147
148
149
150 public void testClientBehaviorHolderRendersIdAndNameSelectBooleanCheckbox()
151 {
152 selectBooleanCheckbox.addClientBehavior("focus", new AjaxBehavior());
153 try
154 {
155 selectBooleanCheckbox.encodeAll(facesContext);
156 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
157 assertTrue(output.matches(".+id=\".+\".+"));
158 assertTrue(output.matches(".+name=\".+\".+"));
159 }
160 catch (Exception e)
161 {
162 fail(e.getMessage());
163 }
164
165 }
166
167
168
169
170 public void testClientBehaviorHolderRendersIdAndNameSelectManyCheckbox()
171 {
172 UISelectItem item1 = new UISelectItem();
173 item1.setItemLabel("#1");
174 item1.setItemValue("#1");
175
176 UISelectItem item2 = new UISelectItem();
177 item2.setItemLabel("#2");
178 item2.setItemValue("#2");
179
180 selectManyCheckbox.addClientBehavior("focus", new AjaxBehavior());
181 try
182 {
183 selectManyCheckbox.getChildren().add(item1);
184 selectManyCheckbox.getChildren().add(item2);
185 selectManyCheckbox.encodeAll(facesContext);
186 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
187 assertTrue(output.matches(".+id=\".+\".+"));
188 assertTrue(output.matches(".+name=\".+\".+"));
189 }
190 catch (Exception e)
191 {
192 fail(e.getMessage());
193 }
194
195 }
196 }