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.application.FacesMessage;
24 import javax.faces.component.html.HtmlForm;
25 import javax.faces.component.html.HtmlInputText;
26 import javax.faces.component.html.HtmlMessage;
27
28 import junit.framework.Test;
29 import junit.framework.TestSuite;
30
31 import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
32 import org.apache.myfaces.test.utils.HtmlRenderedAttr;
33 import org.apache.myfaces.test.base.AbstractJsfTestCase;
34 import org.apache.myfaces.test.mock.MockRenderKitFactory;
35 import org.apache.myfaces.test.mock.MockResponseWriter;
36
37 public class HtmlMessageRendererTest extends AbstractJsfTestCase
38 {
39 private static final String ERROR_CLASS = "errorClass";
40 private static final String WARN_CLASS = "warnClass";
41 private static final String INFO_CLASS = "infoClass";
42
43 private MockResponseWriter writer;
44 private HtmlMessage message;
45 private HtmlForm form;
46 private HtmlInputText inputText;
47
48 public HtmlMessageRendererTest(String name)
49 {
50 super(name);
51 }
52
53 public static Test suite() {
54 return new TestSuite(HtmlMessageRendererTest.class);
55 }
56
57 public void setUp() throws Exception
58 {
59 super.setUp();
60
61 writer = new MockResponseWriter(new StringWriter(), null, null);
62 message = new HtmlMessage();
63 form = new HtmlForm();
64 inputText = new HtmlInputText();
65
66 facesContext.setResponseWriter(writer);
67
68 facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
69 facesContext.getRenderKit().addRenderer(
70 message.getFamily(),
71 message.getRendererType(),
72 new HtmlMessageRenderer());
73 facesContext.getRenderKit().addRenderer(
74 inputText.getFamily(),
75 inputText.getRendererType(),
76 new HtmlTextRenderer());
77 facesContext.getRenderKit().addRenderer(
78 form.getFamily(),
79 form.getRendererType(),
80 new HtmlFormRenderer());
81
82
83 inputText.setId("myInputId");
84
85
86
87 form.getChildren().add(inputText);
88 form.getChildren().add(message);
89
90 facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
91 }
92
93 public void tearDown() throws Exception
94 {
95 super.tearDown();
96 }
97
98 public void testHtmlPropertyPassTru() throws Exception
99 {
100 HtmlRenderedAttr[] attrs = {
101
102 new HtmlRenderedAttr("dir"),
103 new HtmlRenderedAttr("lang"),
104 new HtmlRenderedAttr("title"),
105 new HtmlRenderedAttr("role"),
106
107 new HtmlRenderedAttr("onclick"),
108 new HtmlRenderedAttr("ondblclick"),
109 new HtmlRenderedAttr("onkeydown"),
110 new HtmlRenderedAttr("onkeypress"),
111 new HtmlRenderedAttr("onkeyup"),
112 new HtmlRenderedAttr("onmousedown"),
113 new HtmlRenderedAttr("onmousemove"),
114 new HtmlRenderedAttr("onmouseout"),
115 new HtmlRenderedAttr("onmouseover"),
116 new HtmlRenderedAttr("onmouseup"),
117
118 new HtmlRenderedAttr("style"),
119 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"infoClass\""),
120 };
121
122 facesContext.addMessage(inputText.getClientId(facesContext),
123 new FacesMessage("Validation message here."));
124 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
125 message.setErrorClass(ERROR_CLASS);
126 message.setWarnClass(WARN_CLASS);
127 message.setInfoClass(INFO_CLASS);
128 message.setStyle("left: 48px; top: 432px; position: absolute");
129 message.setFor("myInputId");
130
131 MockResponseWriter writer = (MockResponseWriter)facesContext.getResponseWriter();
132 HtmlCheckAttributesUtil.checkRenderedAttributes(
133 message, facesContext, writer, attrs);
134 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
135 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
136 }
137 }
138
139 public void testRenderSpanOnlyWhenNecessary() throws Exception
140 {
141 facesContext.addMessage(inputText.getClientId(), new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
142 message.setFor("myInputId");
143 message.encodeEnd(facesContext);
144 facesContext.renderResponse();
145 String output = writer.getWriter().toString();
146 System.out.println(output);
147 }
148
149 public void testHtmlPropertyPassTruNotRendered() throws Exception
150 {
151 HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateAttrsNotRenderedForReadOnly();
152
153 facesContext.addMessage(inputText.getClientId(facesContext),
154 new FacesMessage("Validation message here."));
155 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
156 message.setErrorClass(ERROR_CLASS);
157 message.setWarnClass(WARN_CLASS);
158 message.setInfoClass(INFO_CLASS);
159 message.setStyle("left: 48px; top: 432px; position: absolute");
160 message.setFor("myInputId");
161
162 MockResponseWriter writer = (MockResponseWriter)facesContext.getResponseWriter();
163 HtmlCheckAttributesUtil.checkRenderedAttributes(
164 message, facesContext, writer, attrs);
165 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
166 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
167 }
168 }
169 }