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.HtmlMessages;
25
26 import junit.framework.Test;
27 import junit.framework.TestSuite;
28
29 import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
30 import org.apache.myfaces.test.utils.HtmlRenderedAttr;
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
35
36
37
38
39 public class HtmlMessagesRendererTest extends AbstractJsfTestCase
40 {
41 private static final String ERROR_CLASS = "errorClass";
42 private static final String WARN_CLASS = "warnClass";
43 private static final String INFO_CLASS = "infoClass";
44
45 private HtmlMessages messages;
46 private MockResponseWriter writer;
47
48 public HtmlMessagesRendererTest(String name)
49 {
50 super(name);
51 }
52
53 public static Test suite() {
54 return new TestSuite(HtmlMessagesRendererTest.class);
55 }
56
57 public void setUp() throws Exception
58 {
59 super.setUp();
60 messages = new HtmlMessages();
61
62 writer = new MockResponseWriter(new StringWriter(), null, null);
63 facesContext.setResponseWriter(writer);
64
65 facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
66 facesContext.getRenderKit().addRenderer(
67 messages.getFamily(),
68 messages.getRendererType(),
69 new HtmlMessagesRenderer());
70
71 facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
72 }
73
74 public void tearDown() throws Exception
75 {
76 super.tearDown();
77 messages = null;
78 writer = null;
79 }
80
81 public void testHtmlPropertyPassTru() throws Exception
82 {
83 HtmlRenderedAttr[] attrs = {
84
85 new HtmlRenderedAttr("onclick",2),
86 new HtmlRenderedAttr("ondblclick",2),
87 new HtmlRenderedAttr("onkeydown",2),
88 new HtmlRenderedAttr("onkeypress",2),
89 new HtmlRenderedAttr("onkeyup",2),
90 new HtmlRenderedAttr("onmousedown",2),
91 new HtmlRenderedAttr("onmousemove",2),
92 new HtmlRenderedAttr("onmouseout",2),
93 new HtmlRenderedAttr("onmouseover",2),
94 new HtmlRenderedAttr("onmouseup",2),
95
96 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"styleClass\""),
97 new HtmlRenderedAttr("style"),
98 new HtmlRenderedAttr("warnClass", "warnClass", "class=\"warnClass\"",2),
99 new HtmlRenderedAttr("warnStyle", "warnStyle", "style=\"warnStyle\"",2)
100 };
101
102 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
103 facesContext.addMessage("test2", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary2", "detailWarnSummary2"));
104
105 messages.setErrorClass(ERROR_CLASS);
106 messages.setWarnClass(WARN_CLASS);
107 messages.setInfoClass(INFO_CLASS);
108 messages.setWarnStyle("warnStyle");
109
110 messages.setLayout("table");
111
112
113 MockResponseWriter writer = (MockResponseWriter)facesContext.getResponseWriter();
114 HtmlCheckAttributesUtil.checkRenderedAttributes(
115 messages, facesContext, writer, attrs);
116 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
117 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
118 }
119 }
120
121 public void testRenderSpanOnlyWhenNecessary1() throws Exception
122 {
123 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
124 messages.encodeEnd(facesContext);
125 facesContext.renderResponse();
126 String output = writer.getWriter().toString();
127 assertTrue(output.contains("warnSumary"));
128 assertTrue(!output.contains("span"));
129 }
130
131 public void testRenderSpanOnlyWhenNecessary2() throws Exception
132 {
133 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
134 messages.setLayout("table");
135 messages.encodeEnd(facesContext);
136 facesContext.renderResponse();
137 String output = writer.getWriter().toString();
138 assertTrue(output.contains("warnSumary"));
139 assertTrue(!output.contains("span"));
140 }
141
142 public void testRenderSpanOnlyWhenNecessary3() throws Exception
143 {
144 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
145 messages.setId("msgPanel");
146 messages.encodeEnd(facesContext);
147 facesContext.renderResponse();
148 String output = writer.getWriter().toString();
149 assertTrue(output.contains("warnSumary"));
150 assertTrue(!output.contains("span"));
151 }
152
153
154
155
156
157 public void testRenderSpanOnlyWhenNecessary4() throws Exception
158 {
159 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_FATAL, "fatalSumary", "detailFatalSummary"));
160 messages.setId("msgPanel");
161 messages.setFatalClass("fatalClass");
162 messages.encodeEnd(facesContext);
163 facesContext.renderResponse();
164 String output = writer.getWriter().toString();
165 assertTrue(output.contains("fatalSumary"));
166 assertTrue(output.contains("li class=\"fatalClass\""));
167 assertTrue(!output.contains("span"));
168 }
169
170
171
172
173
174 public void testRenderSpanOnlyWhenNecessary5() throws Exception
175 {
176 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_FATAL, "fatalSumary", "detailFatalSummary"));
177 messages.setId("msgPanel");
178 messages.setLayout("table");
179 messages.setFatalClass("fatalClass");
180 messages.encodeEnd(facesContext);
181 facesContext.renderResponse();
182 String output = writer.getWriter().toString();
183 assertTrue(output.contains("fatalSumary"));
184 assertTrue(output.contains("td class=\"fatalClass\""));
185 assertTrue(!output.contains("span"));
186 }
187
188 public void testHtmlPropertyPassTruNotRendered() throws Exception
189 {
190 HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateAttrsNotRenderedForReadOnly();
191
192 facesContext.addMessage("test1", new FacesMessage(FacesMessage.SEVERITY_WARN, "warnSumary", "detailWarnSummary"));
193
194 messages.setErrorClass(ERROR_CLASS);
195 messages.setWarnClass(WARN_CLASS);
196 messages.setInfoClass(INFO_CLASS);
197 messages.setWarnStyle("warnStyle");
198
199 messages.setLayout("table");
200 messages.setStyle("left: 48px; top: 432px; position: absolute");
201
202 MockResponseWriter writer = (MockResponseWriter)facesContext.getResponseWriter();
203 HtmlCheckAttributesUtil.checkRenderedAttributes(
204 messages, facesContext, writer, attrs);
205 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
206 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
207 }
208 }
209 }