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             //_EventProperties
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             //_StyleProperties
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 }