/** * License Agreement. * * JBoss RichFaces - Ajax4jsf Component Library * * 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.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import org.ajax4jsf.component.UIAjaxForm; import org.ajax4jsf.tests.AbstractAjax4JsfTestCase; import org.apache.commons.lang.StringUtils; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlScript; public class AjaxFormRendererTest extends AbstractAjax4JsfTestCase { private static final boolean IS_PAGE_AVAILABILITY_CHECK = true; private static Set javaScripts = new HashSet(); static { javaScripts.add("org.ajax4jsf.javascript.AjaxScript"); javaScripts.add("org/ajax4jsf/javascript/scripts/form.js"); } private UIAjaxForm form1; private UIAjaxForm form2; public AjaxFormRendererTest(String name) { super(name); } public void setUp() throws Exception { super.setUp(); form1 = (UIAjaxForm) application.createComponent(UIAjaxForm.COMPONENT_TYPE); form1.setId("form1"); form1.setAjaxSubmit(true); form2 = (UIAjaxForm) application.createComponent(UIAjaxForm.COMPONENT_TYPE); form2.setId("form2"); form2.setAjaxSubmit(false); facesContext.getViewRoot().getChildren().add(form1); facesContext.getViewRoot().getChildren().add(form2); } public void tearDown() throws Exception { super.tearDown(); } /** * Test script rendering * * @throws Exception */ public void testRenderScript() throws Exception { HtmlPage page = renderView(); assertNotNull(page); System.out.println(page.asXml()); assertEquals(getCountValidScripts(page, javaScripts, IS_PAGE_AVAILABILITY_CHECK).intValue(), javaScripts.size()); } /** * Test rendering * * @throws Exception */ public void testRender() throws Exception { HtmlPage page = renderView(); assertNotNull(page); HtmlElement htmlForm1 = page.getHtmlElementById(form1.getClientId(facesContext)); assertNotNull(htmlForm1); assertEquals("form", htmlForm1.getTagName()); String action = htmlForm1.getAttributeValue("action"); assertNotNull(action); assertTrue(action.startsWith("javascript:A4J.AJAX.SubmitForm")); HtmlElement htmlForm2 = page.getHtmlElementById(form2.getClientId(facesContext)); assertNotNull(htmlForm2); assertEquals("form", htmlForm2.getTagName()); action = htmlForm2.getAttributeValue("action"); assertNotNull(action); assertTrue(action.startsWith("/")); } /** * Test rendering hidden inputs * * @throws Exception */ public void testRenderHiddenInputs() throws Exception { HtmlPage page = renderView(); assertNotNull(page); HtmlElement htmlForm1 = page.getHtmlElementById(form1.getClientId(facesContext)); List inputs = htmlForm1.getHtmlElementsByTagName("input"); assertNotNull(inputs); boolean foundId = false; boolean foundAutoscroll = false; for (Iterator it = inputs.iterator(); it.hasNext(); ) { HtmlElement input = (HtmlElement) it.next(); String name = input.getAttributeValue("name"); assertNotNull(name); if (!foundId && name.equals(form1.getClientId(facesContext))) { foundId = true; } if (!foundAutoscroll && name.equals("autoScroll")) { foundAutoscroll = true; } } assertTrue(foundId); assertTrue(foundAutoscroll); HtmlElement htmlForm2 = page.getHtmlElementById(form2.getClientId(facesContext)); assertNotNull(htmlForm2); assertEquals("form", htmlForm2.getTagName()); } }