View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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          //inputText.setParent(form);
83          inputText.setId("myInputId");
84          
85          //message.setParent(form);
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             //_UniversalProperties
102             new HtmlRenderedAttr("dir"), 
103             new HtmlRenderedAttr("lang"), 
104             new HtmlRenderedAttr("title"),
105             new HtmlRenderedAttr("role"),
106             //_EventProperties
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             //_StyleProperties
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 }