/** * License Agreement. * * Rich Faces - Natural Ajax for Java Server Faces (JSF) * * Copyright (C) 2007 Exadel, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1 as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package org.ajax4jsf.renderkit.html; import java.io.IOException; import java.util.HashSet; import java.util.Locale; import java.util.Set; import javax.faces.component.UIOutput; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import org.ajax4jsf.tests.AbstractAjax4JsfTestCase; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class AjaxPageRendererTest extends AbstractAjax4JsfTestCase { private static Set<String> javaScripts = new HashSet<String>(); private static final boolean IS_PAGE_AVAILABILITY_CHECK = true; static { javaScripts.add("org.ajax4jsf.javascript.AjaxScript"); } private org.ajax4jsf.component.html.HtmlPage ajaxPage = null; public AjaxPageRendererTest(String name) { super(name); } public void setUp() throws Exception { super.setUp(); ajaxPage = (org.ajax4jsf.component.html.HtmlPage) application.createComponent( org.ajax4jsf.component.html.HtmlPage.COMPONENT_TYPE); ajaxPage.setId("page"); UIOutput head = new UIOutput(); head.setValue("HEAD"); ajaxPage.getFacets().put("head", head); UIOutput content = new UIOutput(); content.setValue("content"); ajaxPage.getChildren().add(content); ajaxPage.setFormat("xhtml"); ajaxPage.setPageTitle("title"); facesContext.getViewRoot().setLocale(new Locale("be", "BY")); facesContext.getViewRoot().getChildren().add(ajaxPage); } public void tearDown() throws Exception { super.tearDown(); } public void testRender() throws Exception { HtmlPage page = renderView(); assertNotNull(page); System.out.println(page.asXml()); HtmlElement html = (HtmlElement) page.getFirstChild(); assertNotNull(html); assertEquals("html", html.getTagName()); String lang = html.getAttributeValue("lang"); assertNotNull(lang); assertEquals(lang, "be_BY"); HtmlElement title = (HtmlElement) html.getHtmlElementsByTagName("title").get(0); assertNotNull(title); assertEquals("title", title.getFirstChild().asText()); HtmlElement meta = (HtmlElement) html.getHtmlElementsByTagName("meta").get(0); assertNotNull(meta); String httpEquiv = meta.getAttributeValue("http-equiv"); assertEquals(httpEquiv, "Content-Type"); String content = meta.getAttributeValue("content"); assertEquals(content, "application/xhtml+xml"); } public void testRenderScript() throws Exception { HtmlPage page = renderView(); assertNotNull(page); assertEquals(getCountValidScripts(page, javaScripts, IS_PAGE_AVAILABILITY_CHECK).intValue(), javaScripts.size()); } @Override protected void encodeDocumentProlog(FacesContext context, UIViewRoot viewRoot, ResponseWriter writer) throws IOException { // do nothing as a4j:page encodes full page structure } @Override protected void encodeDocumentEpilog(FacesContext context, UIViewRoot viewRoot, ResponseWriter writer) throws IOException { // do nothing as a4j:page encodes full page structure } }