1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.view.facelets.compiler;
21
22 import java.io.StringWriter;
23
24 import javax.faces.component.UIForm;
25 import javax.faces.component.UIOutput;
26 import javax.faces.component.UIPanel;
27 import javax.faces.component.UISelectItem;
28 import javax.faces.component.UISelectOne;
29 import javax.faces.component.UIViewRoot;
30 import javax.faces.component.html.HtmlForm;
31 import javax.faces.component.html.HtmlOutputText;
32 import javax.faces.component.html.HtmlPanelGrid;
33 import javax.faces.component.html.HtmlSelectOneMenu;
34
35 import junit.framework.Assert;
36 import org.apache.myfaces.config.RuntimeConfig;
37 import org.apache.myfaces.config.impl.digester.elements.FaceletsProcessingImpl;
38
39 import org.apache.myfaces.renderkit.html.HtmlFormRenderer;
40 import org.apache.myfaces.renderkit.html.HtmlGridRenderer;
41 import org.apache.myfaces.renderkit.html.HtmlMenuRenderer;
42 import org.apache.myfaces.renderkit.html.HtmlTextRenderer;
43 import org.apache.myfaces.test.mock.MockResponseWriter;
44 import org.apache.myfaces.view.facelets.FaceletTestCase;
45 import org.junit.Test;
46
47 public class XHTMLFaceletsProcessingTestCase extends FaceletTestCase {
48
49 @Override
50 protected void setupComponents() throws Exception
51 {
52 application.addComponent(UIViewRoot.COMPONENT_TYPE,
53 UIViewRoot.class.getName());
54 application.addComponent(HtmlForm.COMPONENT_TYPE,
55 HtmlForm.class.getName());
56 application.addComponent(HtmlPanelGrid.COMPONENT_TYPE,
57 HtmlPanelGrid.class.getName());
58 application.addComponent(HtmlSelectOneMenu.COMPONENT_TYPE,
59 HtmlSelectOneMenu.class.getName());
60 application.addComponent(UISelectItem.COMPONENT_TYPE,
61 UISelectItem.class.getName());
62 application.addComponent(HtmlOutputText.COMPONENT_TYPE,
63 HtmlOutputText.class.getName());
64 }
65
66 @Override
67 protected void setupRenderers() throws Exception
68 {
69 renderKit.addRenderer(UIForm.COMPONENT_FAMILY,
70 "javax.faces.Form", new HtmlFormRenderer());
71 renderKit.addRenderer(UIOutput.COMPONENT_FAMILY,
72 "javax.faces.Text", new HtmlTextRenderer());
73 renderKit.addRenderer(UISelectOne.COMPONENT_FAMILY,
74 "javax.faces.Menu", new HtmlMenuRenderer());
75 renderKit.addRenderer(UIPanel.COMPONENT_FAMILY,
76 "javax.faces.Grid", new HtmlGridRenderer());
77
78 }
79
80
81
82 @Override
83 protected void setUpExternalContext() throws Exception
84 {
85 super.setUpExternalContext();
86
87 FaceletsProcessingImpl item = new FaceletsProcessingImpl();
88 item.setFileExtension(".xhtml");
89 item.setProcessAs(FaceletsProcessingImpl.PROCESS_AS_XHTML);
90 RuntimeConfig.getCurrentInstance(externalContext).addFaceletProcessingConfiguration(
91 FaceletsProcessingImpl.PROCESS_AS_XHTML, item);
92 }
93
94 @Test
95 public void testXHTMLProcessing1() throws Exception
96 {
97 facesContext.getExternalContext().getRequestMap().put("rquote", "\"");
98
99 UIViewRoot root = facesContext.getViewRoot();
100 vdl.buildView(facesContext, root, "testXHTMLProcessing1.xhtml");
101
102 StringWriter sw = new StringWriter();
103 MockResponseWriter mrw = new MockResponseWriter(sw);
104 facesContext.setResponseWriter(mrw);
105
106 root.encodeAll(facesContext);
107
108 sw.flush();
109
110 String resp = sw.toString();
111
112 Assert.assertTrue("Response contains DOCTYPE declaration", resp.contains("<!DOCTYPE"));
113 Assert.assertFalse("Response not contains DOCTYPE html declaration", resp.contains("<!DOCTYPE html>"));
114 Assert.assertTrue("Response contains xml declaration", resp.contains("<?xml"));
115 Assert.assertTrue("Response contains xml processing instructions", resp.contains("<?name"));
116 Assert.assertTrue("Response contains cdata section", resp.contains("<![CDATA["));
117 Assert.assertTrue("Response contains cdata section", resp.contains("cdata not consumed"));
118 Assert.assertTrue("Response does not escape characters", resp.contains("In this mode, if you put a double quote, it will be replaced by " : ""));
119 Assert.assertTrue("Response contains comments", resp.contains("<!--"));
120 Assert.assertTrue("Response should escape EL and markup", resp.contains("Check EL Escaping " : ""));
121
122 }
123 }