/** * 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.Iterator; import javax.faces.component.UIForm; import javax.faces.component.UIGraphic; import javax.faces.component.html.HtmlForm; import org.ajax4jsf.component.UIAjaxStatus; import org.ajax4jsf.tests.AbstractAjax4JsfTestCase; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class AjaxStatusRendererTest extends AbstractAjax4JsfTestCase { private UIForm form = null; private UIAjaxStatus status1 = null; private UIAjaxStatus status2 = null; public AjaxStatusRendererTest(String name) { super(name); } public void setUp() throws Exception { super.setUp(); application.addComponent("org.ajax4jsf.AjaxStatus", "org.ajax4jsf.component.html.HtmlAjaxStatus"); form = new HtmlForm(); form.setId("form"); facesContext.getViewRoot().getChildren().add(form); status1 = (UIAjaxStatus) application.createComponent(UIAjaxStatus.COMPONENT_TYPE); status1.setId("status1"); status1.setStartStyle("color: red;"); status1.setStartStyleClass("A B C D"); status1.setStopStyle("color: green;"); status1.setStopStyleClass("X Y Z"); status1.setStartText("startText"); status1.setStopText("stopText"); status1.getAttributes().put("layout", "block"); status2 = (UIAjaxStatus) application.createComponent(UIAjaxStatus.COMPONENT_TYPE); status2.setId("status2"); status2.setStartStyle("color: red;"); status2.setStartStyleClass("A B C D"); status2.setStopStyle("color: green;"); status2.setStopStyleClass("X Y Z"); status2.getAttributes().put("layout", "inline"); UIGraphic startImage = new UIGraphic(); startImage.setValue("start.png"); startImage.getAttributes().put("alt", "alt"); status2.getFacets().put("start", startImage); UIGraphic stopGraphic = new UIGraphic(); stopGraphic.setValue("stop.png"); stopGraphic.getAttributes().put("alt", "alt"); status2.getFacets().put("stop", stopGraphic); form.getChildren().add(status1); form.getChildren().add(status2); } public void tearDown() throws Exception { super.tearDown(); status1 = null; status2 = null; form = null; } /** * Test rendering * * @throws Exception */ public void testRender() throws Exception { HtmlPage page = renderView(); assertNotNull(page); HtmlElement div = page.getHtmlElementById(status1.getClientId(facesContext)); assertNotNull(div); assertEquals("div", div.getNodeName()); Iterator childIterator = div.getChildIterator(); int i = 0; while (childIterator.hasNext()) { i++; HtmlElement element = (HtmlElement) childIterator.next(); assertEquals("div", element.getNodeName()); } assertEquals(2, i); HtmlElement div1 = page.getHtmlElementById(status1.getClientId(facesContext) + ".start"); assertNotNull(div1); String style1 = div1.getAttributeValue("style"); assertNotNull(style1); assertTrue(style1.contains("color: red;")); String class1 = div1.getAttributeValue("class"); assertNotNull(class1); assertEquals(class1, "A B C D"); HtmlElement div2 = page.getHtmlElementById(status1.getClientId(facesContext) + ".stop"); assertNotNull(div2); String style2 = div2.getAttributeValue("style"); assertNotNull(style2); assertTrue(style2.contains("color: green;")); String class2 = div2.getAttributeValue("class"); assertNotNull(class2); assertEquals(class2, "X Y Z"); form.getChildren().remove(0); page = renderView(); System.out.println(page.asXml()); HtmlElement span = (HtmlElement) div.getNextSibling(); assertNotNull(span); assertEquals("span", span.getNodeName()); childIterator = span.getChildIterator(); i = 0; while (childIterator.hasNext()) { i++; HtmlElement element = (HtmlElement) childIterator.next(); assertEquals("span", element.getNodeName()); assertEquals("img", element.getFirstChild().getNodeName()); } assertEquals(2, i); } }