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
106 new HtmlRenderedAttr("onclick"),
107 new HtmlRenderedAttr("ondblclick"),
108 new HtmlRenderedAttr("onkeydown"),
109 new HtmlRenderedAttr("onkeypress"),
110 new HtmlRenderedAttr("onkeyup"),
111 new HtmlRenderedAttr("onmousedown"),
112 new HtmlRenderedAttr("onmousemove"),
113 new HtmlRenderedAttr("onmouseout"),
114 new HtmlRenderedAttr("onmouseover"),
115 new HtmlRenderedAttr("onmouseup"),
116
117 new HtmlRenderedAttr("style"),
118 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"infoClass\""),
119 };
120
121 facesContext.addMessage(inputText.getClientId(facesContext),
122 new FacesMessage("Validation message here."));
123 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
124 message.setErrorClass(ERROR_CLASS);
125 message.setWarnClass(WARN_CLASS);
126 message.setInfoClass(INFO_CLASS);
127 message.setStyle("left: 48px; top: 432px; position: absolute");
128 message.setFor("myInputId");
129
130 MockResponseWriter writer = (MockResponseWriter)facesContext.getResponseWriter();
131 HtmlCheckAttributesUtil.checkRenderedAttributes(
132 message, facesContext, writer, attrs);
133 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
134 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
135 }
136 }
137
138 public void testRenderSpanOnlyWhenNecessary() throws Exception
139 {
140 facesContext.addMessage(inputText.getClientId(), new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
141 message.setFor("myInputId");
142 message.encodeEnd(facesContext);
143 facesContext.renderResponse();
144 String output = writer.getWriter().toString();
145 System.out.println(output);
146 }
147
148 public void testHtmlPropertyPassTruNotRendered() throws Exception
149 {
150 HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateAttrsNotRenderedForReadOnly();
151
152 facesContext.addMessage(inputText.getClientId(facesContext),
153 new FacesMessage("Validation message here."));
154 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
155 message.setErrorClass(ERROR_CLASS);
156 message.setWarnClass(WARN_CLASS);
157 message.setInfoClass(INFO_CLASS);
158 message.setStyle("left: 48px; top: 432px; position: absolute");
159 message.setFor("myInputId");
160
161 MockResponseWriter writer = (MockResponseWriter)facesContext.getResponseWriter();
162 HtmlCheckAttributesUtil.checkRenderedAttributes(
163 message, facesContext, writer, attrs);
164 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
165 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
166 }
167 }
168 }