Author: konstantin.mishin
Date: 2010-04-14 13:18:38 -0400 (Wed, 14 Apr 2010)
New Revision: 16760
Added:
root/ui-sandbox/trunk/components/tables/ui/src/test/java/org/richfaces/renderkit/
root/ui-sandbox/trunk/components/tables/ui/src/test/java/org/richfaces/renderkit/ExtendedDataTableRendererTest.java
root/ui-sandbox/trunk/components/tables/ui/src/test/resources/
root/ui-sandbox/trunk/components/tables/ui/src/test/resources/extendedDataTableTest.xhtml
Log:
RF-8480
Added:
root/ui-sandbox/trunk/components/tables/ui/src/test/java/org/richfaces/renderkit/ExtendedDataTableRendererTest.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/test/java/org/richfaces/renderkit/ExtendedDataTableRendererTest.java
(rev 0)
+++
root/ui-sandbox/trunk/components/tables/ui/src/test/java/org/richfaces/renderkit/ExtendedDataTableRendererTest.java 2010-04-14
17:18:38 UTC (rev 16760)
@@ -0,0 +1,177 @@
+/**
+ *
+ */
+package org.richfaces.renderkit;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.faces.application.ViewHandler;
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewDeclarationLanguage;
+
+import org.jboss.test.faces.FacesEnvironment.FacesRequest;
+import org.jboss.test.faces.htmlunit.HtmlUnitEnvironment;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.richfaces.component.UIExtendedDataTable;
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+/**
+ * @author Konstantin Mishin
+ *
+ */
+public class ExtendedDataTableRendererTest {
+
+ private HtmlUnitEnvironment environment = new HtmlUnitEnvironment();
+
+ @Before
+ public void setUp() {
+ environment = new HtmlUnitEnvironment();
+ environment.withWebRoot(new File("src/test/resources"));
+ environment.start();
+ }
+
+ @After
+ public void tearDown() {
+ environment.release();
+ environment = null;
+ }
+
+ /**
+ * Test method for {@link
org.richfaces.renderkit.ExtendedDataTableRenderer#getComponentClass()}.
+ *
+ * @throws IOException
+ */
+ @Test
+ public final void testGetComponentClass() throws IOException {
+ FacesRequest facesRequest =
environment.createFacesRequest("http://localhost/extendedDataTableTest.jsf");
+ facesRequest.withViewId("/extendedDataTableTest.jsf");
+ facesRequest.start();
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ViewHandler vh = facesContext.getApplication().getViewHandler();
+ ViewDeclarationLanguage vdl = vh.getViewDeclarationLanguage(facesContext,
facesContext.getViewRoot()
+ .getViewId());
+ vdl.buildView(facesContext, facesContext.getViewRoot());
+ UIExtendedDataTable component = (UIExtendedDataTable)
facesContext.getViewRoot().findComponent("table");
+ ExtendedDataTableRenderer renderer = (ExtendedDataTableRenderer)
FacesContext.getCurrentInstance()
+ .getRenderKit().getRenderer(component.getFamily(),
component.getRendererType());
+ assertEquals(UIExtendedDataTable.class, renderer.getComponentClass());
+ facesRequest.release();
+ }
+
+ /**
+ * Test method for
+ * {@link
org.richfaces.renderkit.ExtendedDataTableRenderer#doEncodeBegin(javax.faces.context.ResponseWriter,
+ * javax.faces.context.FacesContext, javax.faces.component.UIComponent)}.
+ *
+ * @throws IOException
+ */
+ @Test
+ public final void testDoEncodeBegin() throws IOException {
+ HtmlPage page = environment.getPage("/extendedDataTableTest.jsf");
+ HtmlElement table = page.getElementById("table");
+ assertEquals("rich-extable", table.getAttribute("class"));
+ assertEquals("headerFacet",
table.getElementById("table:headerFacet").getTextContent());
+ }
+
+ /**
+ * Test method for
+ * {@link
org.richfaces.renderkit.ExtendedDataTableRenderer#doEncodeChildren(javax.faces.context.ResponseWriter,
+ * javax.faces.context.FacesContext, javax.faces.component.UIComponent)}.
+ *
+ * @throws IOException
+ */
+ @Test
+ public final void testDoEncodeChildren() throws IOException {
+ HtmlPage page = environment.getPage("/extendedDataTableTest.jsf");
+ HtmlElement table = page.getElementById("table");
+ String text =
table.getElementsByTagName("style").get(0).getTextContent();
+ assertTrue(text.contains("rich-extable-part-width"));
+ assertTrue(text.contains("rich-extable-cell-width"));
+ HtmlElement header =
table.getFirstByXPath("div[@class='rich-extable-header']");
+ HtmlElement frozenHeader =
header.getElementById("table:frozenHeader");
+ HtmlElement normalHeader = header.getElementById("table:header");
+
assertTrue(normalHeader.getAttribute("class").contains("rich-extable-part-width"));
+
assertNotNull(frozenHeader.getFirstByXPath("descendant::*[@class='rich-extable-resizer']"));
+
assertNotNull(normalHeader.getFirstByXPath("descendant::*[@class='rich-extable-resizer']"));
+ assertEquals("headerColumnFacet1", ((HtmlElement) frozenHeader
+
.getFirstByXPath("//*[@class='rich-extable-header-cell-content']//*[@id='table:headerColumnFacet1']"))
+ .getTextContent());
+ assertEquals("headerColumnFacet2", ((HtmlElement) normalHeader
+
.getFirstByXPath("//*[@class='rich-extable-header-cell-content']//*[@id='table:headerColumnFacet2']"))
+ .getTextContent());
+ HtmlElement body = table.getElementById("table:b");
+ assertEquals("rich-extable-body",
body.getAttribute("class"));
+
assertNotNull(body.getFirstByXPath("descendant::*[@class='rich-extable-spacer']"));
+ assertNotNull(body
+ .getFirstByXPath("descendant::*[@class='rich-extable-part
rich-extable-part-width']//*[@id='table:tbn']"));
+ assertEquals("noDataFacet", ((HtmlElement) page
+
.getFirstByXPath("//*[@id='table2']//*[@id='table2:b']//*[@id='table2:noDataFacet']")).getTextContent());
+ HtmlElement footer =
table.getFirstByXPath("div[@class='rich-extable-footer']");
+ HtmlElement frozenFooter =
footer.getFirstByXPath("descendant::*[@class='rich-extable-footer-align']/div");
+ HtmlElement normalFooter = footer.getElementById("table:footer");
+
assertTrue(normalFooter.getAttribute("class").contains("rich-extable-part-width"));
+ assertEquals("footerColumnFacet1", ((HtmlElement) frozenFooter
+
.getFirstByXPath("descendant::*[@class='rich-extable-footer-cell-content']//*[@id='table:footerColumnFacet1']"))
+ .getTextContent());
+ assertEquals("footerColumnFacet2", ((HtmlElement) normalFooter
+
.getFirstByXPath("descendant::*[@class='rich-extable-footer-cell-content']//*[@id='table:footerColumnFacet2']"))
+ .getTextContent());
+ }
+
+ /**
+ * Test method for
+ * {@link
org.richfaces.renderkit.ExtendedDataTableRenderer#doEncodeEnd(javax.faces.context.ResponseWriter,
+ * javax.faces.context.FacesContext, javax.faces.component.UIComponent)}.
+ *
+ * @throws IOException
+ */
+ @Test
+ public final void testDoEncodeEnd() throws IOException {
+ HtmlPage page = environment.getPage("/extendedDataTableTest.jsf");
+ HtmlElement table = page.getElementById("table");
+ assertEquals("footerFacet",
table.getElementById("table:footerFacet").getTextContent());
+ assertEquals("rich-extable-drag",
table.getElementById("table:d").getAttribute("class"));
+ assertEquals("rich-extable-reorder",
table.getElementById("table:r").getAttribute("class"));
+ assertEquals("rich-extable-reorder-marker",
table.getElementById("table:rm").getAttribute("class"));
+ assertEquals("table:wi",
table.getElementById("table:wi").getAttribute("name"));
+
assertTrue(table.getElementsByTagName("script").get(0).getTextContent()
+ .contains("RichFaces.ExtendedDataTable"));
+ }
+
+ /**
+ * Test method for
+ * {@link
org.richfaces.renderkit.ExtendedDataTableRenderer#encodeRow(org.richfaces.renderkit.RowHolderBase)}.
+ *
+ * @throws IOException
+ */
+ @Test
+ public final void testEncodeRow() throws IOException {
+ HtmlPage page = environment.getPage("/extendedDataTableTest.jsf");
+ HtmlElement table = page.getElementById("table");
+ HtmlElement cell =
table.getElementById("table:0:f").getElementsByTagName("div").get(0);
+
assertTrue(cell.getAttribute("class").contains("rich-extable-cell"));
+ HtmlElement cellContent = cell.getElementsByTagName("div").get(0);
+ assertEquals("rich-extable-cell-content",
cellContent.getAttribute("class"));
+ assertEquals("value",
cellContent.getElementById("table:0:outputText").getTextContent());
+ }
+
+ /**
+ * Test method for
+ * {@link
org.richfaces.renderkit.ExtendedDataTableRenderer#encodePartially(javax.faces.component.UIComponent,
+ * javax.faces.component.visit.VisitContext,
javax.faces.component.visit.VisitCallback, java.util.Collection)}.
+ */
+ @Test
+ public final void testEncodePartially() {
+ // TODO fail("Not yet implemented");
+ }
+
+}
Added:
root/ui-sandbox/trunk/components/tables/ui/src/test/resources/extendedDataTableTest.xhtml
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/test/resources/extendedDataTableTest.xhtml
(rev 0)
+++
root/ui-sandbox/trunk/components/tables/ui/src/test/resources/extendedDataTableTest.xhtml 2010-04-14
17:18:38 UTC (rev 16760)
@@ -0,0 +1,73 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
xmlns="http://www.w3.org/1999/xhtml"
+
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:rich="http://richfaces.org/rich">
+<!--
+JBoss, Home of Professional Open Source
+Copyright ${year}, Red Hat, Inc. and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+
+This software 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 software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+-->
+ <h:head>
+ <title>Richfaces ExtendedDataTable Test</title>
+ </h:head>
+
+ <h:body>
+ <rich:extendedDataTable id="table" frozenColumns="1"
value="value" var="var">
+ <f:facet name="header">
+ <h:outputText id="headerFacet" value="headerFacet"/>
+ </f:facet>
+ <f:facet name="noData">
+ <h:outputText id="noDataFacet" value="noDataFacet"/>
+ </f:facet>
+ <f:facet name="footer">
+ <h:outputText id="footerFacet" value="footerFacet"/>
+ </f:facet>
+ <rich:column id="column1">
+ <f:facet name="header">
+ <h:outputText id="headerColumnFacet1"
value="headerColumnFacet1"/>
+ </f:facet>
+ <h:outputText id="outputText" value="#{var}"/>
+ <f:facet name="footer">
+ <h:outputText id="footerColumnFacet1"
value="footerColumnFacet1"/>
+ </f:facet>
+ </rich:column>
+ <rich:column id="column2" >
+ <f:facet name="header">
+ <h:outputText id="headerColumnFacet2"
value="headerColumnFacet2"/>
+ </f:facet>
+ <f:facet name="footer">
+ <h:outputText id="footerColumnFacet2"
value="footerColumnFacet2"/>
+ </f:facet>
+ </rich:column>
+ </rich:extendedDataTable>
+ <rich:extendedDataTable id="table2" >
+ <f:facet name="noData">
+ <h:outputText id="noDataFacet" value="noDataFacet"/>
+ </f:facet>
+ <rich:column></rich:column>
+ </rich:extendedDataTable>
+ </h:body>
+</html>