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.IOException;
22 import java.io.StringWriter;
23
24 import javax.faces.component.behavior.AjaxBehavior;
25 import javax.faces.component.html.HtmlOutputLabel;
26
27 import junit.framework.Test;
28 import junit.framework.TestSuite;
29
30 import org.apache.myfaces.test.base.AbstractJsfTestCase;
31 import org.apache.myfaces.test.mock.MockRenderKitFactory;
32 import org.apache.myfaces.test.mock.MockResponseWriter;
33 import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
34 import org.apache.myfaces.test.utils.HtmlRenderedAttr;
35
36 public class HtmlLabelRendererTest extends AbstractJsfTestCase
37 {
38 private MockResponseWriter writer;
39 private HtmlOutputLabel label;
40
41 public HtmlLabelRendererTest(String name)
42 {
43 super(name);
44 }
45
46 public static Test suite() {
47 return new TestSuite(HtmlLabelRendererTest.class);
48 }
49
50 public void setUp() throws Exception {
51 super.setUp();
52 label = new HtmlOutputLabel();
53 writer = new MockResponseWriter(new StringWriter(), null, null);
54 facesContext.setResponseWriter(writer);
55
56 facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
57 facesContext.getRenderKit().addRenderer(
58 label.getFamily(),
59 label.getRendererType(),
60 new HtmlLabelRenderer());
61 facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
62 }
63
64 public void tearDown() throws Exception {
65 super.tearDown();
66 writer = null;
67 label = null;
68 }
69
70 public void testHtmlPropertyPassTru() throws Exception
71 {
72 HtmlRenderedAttr[] attrs = {
73
74 new HtmlRenderedAttr("accesskey"),
75
76 new HtmlRenderedAttr("dir"),
77 new HtmlRenderedAttr("lang"),
78 new HtmlRenderedAttr("title"),
79 new HtmlRenderedAttr("role"),
80
81 new HtmlRenderedAttr("onfocus"),
82 new HtmlRenderedAttr("onblur"),
83
84 new HtmlRenderedAttr("onclick"),
85 new HtmlRenderedAttr("ondblclick"),
86 new HtmlRenderedAttr("onkeydown"),
87 new HtmlRenderedAttr("onkeypress"),
88 new HtmlRenderedAttr("onkeyup"),
89 new HtmlRenderedAttr("onmousedown"),
90 new HtmlRenderedAttr("onmousemove"),
91 new HtmlRenderedAttr("onmouseout"),
92 new HtmlRenderedAttr("onmouseover"),
93 new HtmlRenderedAttr("onmouseup"),
94
95 new HtmlRenderedAttr("style"),
96 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"styleClass\""),
97 };
98
99 label.setValue("outputdata");
100 label.setFor("compId");
101
102 HtmlCheckAttributesUtil.checkRenderedAttributes(
103 label, facesContext, writer, attrs);
104 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
105 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
106 }
107 }
108
109
110
111
112
113 protected String getPageContents()
114 {
115 return ((StringWriter) writer.getWriter()).toString();
116 }
117
118 public void testEscapeUntouched() throws IOException
119 {
120 label.setId("labelId");
121 label.setValue("<span class=\"required\">field label</span>");
122
123
124 label.encodeAll(facesContext);
125
126 String page = getPageContents();
127 assertEquals("<label id=\"labelId\"><span class="required">field label</span></label>", page);
128 }
129
130 public void testEscapeSetToFalse() throws IOException
131 {
132 label.setId("labelId");
133 label.setValue("<span class=\"required\">field label</span>");
134 label.setEscape(false);
135
136
137 label.encodeAll(facesContext);
138
139 String page = getPageContents();
140 assertEquals("<label id=\"labelId\"><span class=\"required\">field label</span></label>", page);
141 }
142
143
144
145
146 public void testClientBehaviorHolderRendersIdAndName()
147 {
148 label.addClientBehavior("keypress", new AjaxBehavior());
149 try
150 {
151 label.encodeAll(facesContext);
152 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
153 assertTrue(output.matches(".+id=\".+\".+"));
154 assertTrue(output.matches(".+name=\".+\".+"));
155 }
156 catch (Exception e)
157 {
158 fail(e.getMessage());
159 }
160
161 }
162
163 }