package org.richfaces.renderkit; import static org.junit.Assert.assertEquals; 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.CustomizedHtmlUnitEnvironment; import org.richfaces.component.AbstractDataGrid; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class DataGridRendererTest { private HtmlUnitEnvironment environment; @Before public void setUp() { environment = new CustomizedHtmlUnitEnvironment(); environment.withWebRoot(new File("src/test/resources")); environment.start(); } @After public void tearDown() { environment.release(); environment = null; } private FacesRequest startFacesRequest() throws IOException { FacesRequest facesRequest = environment.createFacesRequest("http://localhost/dataGridTest.jsf"); facesRequest.withViewId("/dataGridTest.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()); return facesRequest; } @Test public final void testGetComponentClass() throws IOException { FacesRequest facesRequest = startFacesRequest(); FacesContext facesContext = FacesContext.getCurrentInstance(); AbstractDataGrid component = (AbstractDataGrid) facesContext.getViewRoot().findComponent("dataGrid"); DataGridRenderer renderer = (DataGridRenderer) FacesContext.getCurrentInstance().getRenderKit() .getRenderer(component.getFamily(), component.getRendererType()); assertEquals(AbstractDataGrid.class, renderer.getComponentClass()); facesRequest.release(); } @Test public final void testDoEncodeChildren() throws IOException { HtmlPage page = environment.getPage("/dataGridTest.jsf"); HtmlElement dataGrid = (HtmlElement) page.getElementById("dataGrid2"); assertEquals("rf-dg", dataGrid.getAttribute("class")); assertEquals("noDataFacet", ((HtmlElement) dataGrid .getFirstByXPath("tbody/tr[@class='rf-dg-nd']/td[@class='rf-dg-nd-c']/*[@id='dataGrid2:noDataFacet']")) .getTextContent()); } @Test public final void testEncodeRow() throws IOException { HtmlPage page = environment.getPage("/dataGridTest.jsf"); HtmlElement dataGrid = (HtmlElement) page.getElementById("dataGrid"); assertEquals("value", ((HtmlElement) dataGrid .getFirstByXPath("tbody/tr[@class='rf-dg-r']/td[@class='rf-dg-c']/*[@id='dataGrid:0:outputText']")) .getTextContent()); } @Test public final void testEncodeHeader() throws IOException { HtmlPage page = environment.getPage("/dataGridTest.jsf"); HtmlElement dataGrid = (HtmlElement) page.getElementById("dataGrid"); HtmlElement th = dataGrid.getFirstByXPath("thead[@class='rf-dg-thead']/tr[@class='rf-dg-h']/th[@class='rf-dg-h-c']"); assertEquals("1", th.getAttribute("colspan")); assertEquals("headerFacet", page.getElementById("dataGrid:headerFacet").getTextContent()); } @Test public final void testEncodeFooter() throws IOException { HtmlPage page = environment.getPage("/dataGridTest.jsf"); HtmlElement dataGrid = (HtmlElement) page.getElementById("dataGrid"); HtmlElement td = dataGrid.getFirstByXPath("tfoot[@class='rf-dg-tfoot']/tr[@class='rf-dg-f']/td[@class='rf-dg-f-c']"); assertEquals("1", td.getAttribute("colspan")); assertEquals("footerFacet", page.getElementById("dataGrid:footerFacet").getTextContent()); } @Test public final void testEncodeCaption() throws IOException { HtmlPage page = environment.getPage("/dataGridTest.jsf"); HtmlElement dataGridCaption = (HtmlElement) page.getElementById("dataGrid:captionFacet"); assertEquals("captionFacet", dataGridCaption.getTextContent()); } @Test public final void testEncodeTBody() throws IOException { HtmlPage page = environment.getPage("/dataGridTest.jsf"); HtmlElement dataGrid = (HtmlElement) page.getElementById("dataGrid2"); assertEquals("rf-dg-body", ((HtmlElement) dataGrid.getFirstByXPath("tbody[@id='dataGrid2:dgb']")).getAttribute("class")); } }