[richfaces-svn-commits] JBoss Rich Faces SVN: r18849 - in trunk/ui/input/ui/src/test: java and 7 other directories.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Fri Aug 20 10:14:43 EDT 2010
Author: abelevich
Date: 2010-08-20 10:14:43 -0400 (Fri, 20 Aug 2010)
New Revision: 18849
Added:
trunk/ui/input/ui/src/test/java/
trunk/ui/input/ui/src/test/java/org/
trunk/ui/input/ui/src/test/java/org/richfaces/
trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/
trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/DataBean.java
trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java
trunk/ui/input/ui/src/test/resources/
trunk/ui/input/ui/src/test/resources/org/
trunk/ui/input/ui/src/test/resources/org/richfaces/
trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/
trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml
trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml
Log:
add test for the inplaceInput
Added: trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/DataBean.java
===================================================================
--- trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/DataBean.java (rev 0)
+++ trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/DataBean.java 2010-08-20 14:14:43 UTC (rev 18849)
@@ -0,0 +1,41 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, 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.
+ */
+
+package org.richfaces.renderkit;
+
+
+public class DataBean {
+
+ private String value = "Test String";
+
+ public DataBean() {
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+}
Added: trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java
===================================================================
--- trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java (rev 0)
+++ trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java 2010-08-20 14:14:43 UTC (rev 18849)
@@ -0,0 +1,222 @@
+/*
+ * 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.
+ */
+
+package org.richfaces.renderkit;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.util.List;
+
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.jboss.test.faces.htmlunit.HtmlUnitEnvironment;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.gargoylesoftware.htmlunit.html.DomNode;
+import com.gargoylesoftware.htmlunit.html.DomText;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+/**
+ * @author Anton Belevich
+ *
+ */
+public class InplaceInputRendererTest {
+
+ private HtmlUnitEnvironment environment;
+
+ @Before
+ public void setUp() {
+ environment = new HtmlUnitEnvironment();
+
+ environment.withWebRoot(new File("src/test/resources"));
+ environment.withResource("/WEB-INF/faces-config.xml", "org/richfaces/renderkit/faces-config.xml");
+ environment.withResource("/test.xhtml", "org/richfaces/renderkit/rendererTest.xhtml");
+ environment.start();
+ }
+
+ @Test
+ public void testRenderDefaultState() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ List<?> nodes = page.getByXPath("//*[@id = 'form:input_default']");
+ assertEquals(1, nodes.size());
+ HtmlElement span = (HtmlElement) nodes.get(0);
+ assertEquals("span", span.getNodeName());
+ assertEquals("rf-ii-d-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
+
+ HtmlElement label = (HtmlElement)span.getFirstChild();
+ assertEquals("span", label.getNodeName());
+ assertEquals("rf-ii-lbl", label.getAttribute(HTML.CLASS_ATTRIBUTE));
+ DomNode text = label.getFirstChild();
+ assertEquals(DomNode.TEXT_NODE, text.getNodeType());
+
+ HtmlElement edit = (HtmlElement)label.getNextSibling();
+ assertEquals("span", edit.getNodeName());
+ assertEquals("rf-ii-e-s rf-ii-none", edit.getAttribute(HTML.CLASS_ATTRIBUTE));
+
+ HtmlElement input = (HtmlElement)edit.getFirstChild();
+ assertEquals("input", input.getNodeName());
+ assertEquals("rf-ii-f", input.getAttribute(HTML.CLASS_ATTRIBUTE));
+ assertEquals(text.getNodeValue(), input.getAttribute(HTML.VALUE_ATTRIBUTE));
+
+ List<?> buttons = page.getByXPath("//*[@id = 'form:input_default:btn']");
+ assertEquals(true, buttons.isEmpty());
+ }
+
+ @Test
+ public void testRenderEditState() throws Exception {
+
+ HtmlPage page = environment.getPage("/test.jsf");
+
+ List<?> nodes = page.getByXPath("//*[@id = 'form:input_edit']");
+ assertEquals(1, nodes.size());
+ HtmlElement span = (HtmlElement) nodes.get(0);
+ assertEquals("span", span.getNodeName());
+ assertEquals("rf-ii-d-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
+
+ HtmlElement label = (HtmlElement)span.getFirstChild();
+ assertEquals("span", label.getNodeName());
+ assertEquals("rf-ii-lbl", label.getAttribute(HTML.CLASS_ATTRIBUTE));
+ DomNode text = label.getFirstChild();
+ assertEquals(DomNode.TEXT_NODE, text.getNodeType());
+
+ HtmlElement edit = (HtmlElement)label.getNextSibling();
+ assertEquals("span", edit.getNodeName());
+ assertEquals("rf-ii-e-s", edit.getAttribute(HTML.CLASS_ATTRIBUTE));
+
+ HtmlElement input = (HtmlElement)edit.getFirstChild();
+ assertEquals("input", input.getNodeName());
+ assertEquals("rf-ii-f", input.getAttribute(HTML.CLASS_ATTRIBUTE));
+ assertEquals(text.getNodeValue(), input.getAttribute(HTML.VALUE_ATTRIBUTE));
+
+ List<?> buttonNodes = page.getByXPath("//*[@id = 'form:input_edit:btn']");
+ assertEquals(1, buttonNodes.size());
+
+ HtmlElement button = (HtmlElement) buttonNodes.get(0);
+ assertEquals("span", button.getNodeName());
+
+ List<?> okButtonNodes = page.getByXPath("//*[@id = 'form:input_edit:okbtn']");
+ assertEquals(1, okButtonNodes.size());
+
+ HtmlElement okButton = (HtmlElement) okButtonNodes.get(0);
+ assertEquals("input", okButton.getNodeName());
+ assertEquals("rf-ii-btn", okButton.getAttribute(HTML.CLASS_ATTRIBUTE));
+ assertEquals("image", okButton.getAttribute(HTML.TYPE_ATTR));
+
+ List<?> cancelButtonNodes = page.getByXPath("//*[@id = 'form:input_edit:cancelbtn']");
+ assertEquals(1, cancelButtonNodes.size());
+
+ HtmlElement cancelButton = (HtmlElement) cancelButtonNodes.get(0);
+ assertEquals("input", cancelButton.getNodeName());
+ assertEquals("rf-ii-btn", cancelButton.getAttribute(HTML.CLASS_ATTRIBUTE));
+ assertEquals("image", cancelButton.getAttribute(HTML.TYPE_ATTR));
+
+ }
+
+ @Test
+ public void testEdit() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ edit(page, "input_default");
+ List<?> labelNodes = page.getByXPath("//*[@id = 'form:input_default:label']/text()");
+ assertEquals(1, labelNodes.size());
+ DomText text = (DomText) labelNodes.get(0);
+ assertEquals("Another Test String", text.getTextContent());
+
+ List<?>nodes = page.getByXPath("//*[@id = 'form:input_default']");
+ assertEquals(1, nodes.size());
+ HtmlElement span = (HtmlElement) nodes.get(0);
+ assertEquals("rf-ii-d-s rf-ii-c-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
+
+ }
+
+ private void edit(HtmlPage page, String inplaceInputId) throws Exception {
+ List<?> nodes = page.getByXPath("//*[@id = 'form:" + inplaceInputId + "']");
+ assertEquals(1, nodes.size());
+ HtmlElement span = (HtmlElement) nodes.get(0);
+ span.click();
+
+ List<?> editNodes = page.getByXPath("//*[@id = 'form:" + inplaceInputId + ":edit']");
+ assertEquals(1, editNodes.size());
+ HtmlElement edit = (HtmlElement) editNodes.get(0);
+ assertEquals("rf-ii-e-s", edit.getAttribute(HTML.CLASS_ATTRIBUTE));
+
+ List<?> inputNodes = page.getByXPath("//*[@id = 'form:" + inplaceInputId + ":input']");
+ assertEquals(1, inputNodes.size());
+ HtmlElement input = (HtmlElement) inputNodes.get(0);
+ input.setAttribute(HTML.VALUE_ATTRIBUTE, "");
+ input.type("Another Test String");
+
+ List<?> panelNodes = page.getByXPath("//*[@id = 'form:panel']");
+ assertEquals(1, panelNodes.size());
+ HtmlElement panel = (HtmlElement) panelNodes.get(0);
+ panel.click();
+ }
+
+ @Test
+ public void testEditWithControls() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+
+ edit(page, "input_controls");
+
+ List<?> cancelNodes = page.getByXPath("//*[@id = 'form:input_controls:cancelbtn']");
+ assertEquals(1, cancelNodes.size());
+ HtmlElement cancel = (HtmlElement) cancelNodes.get(0);
+
+ cancel.mouseDown();
+
+ List<?> labelNodes = page.getByXPath("//*[@id = 'form:input_controls:label']/text()");
+ assertEquals(1, labelNodes.size());
+ DomText text = (DomText) labelNodes.get(0);
+ assertEquals("Test String", text.getTextContent());
+
+ List<?> nodes = page.getByXPath("//*[@id = 'form:input_controls']");
+ assertEquals(1, nodes.size());
+ HtmlElement span = (HtmlElement) nodes.get(0);
+ assertEquals("rf-ii-d-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
+
+ edit(page, "input_controls");
+
+ List<?> okNodes = page.getByXPath("//*[@id = 'form:input_controls:okbtn']");
+ assertEquals(1, okNodes.size());
+ HtmlElement ok = (HtmlElement) okNodes.get(0);
+
+ ok.mouseDown();
+
+ labelNodes = page.getByXPath("//*[@id = 'form:input_controls:label']/text()");
+ assertEquals(1, labelNodes.size());
+ text = (DomText) labelNodes.get(0);
+ assertEquals("Another Test String", text.getTextContent());
+
+ nodes = page.getByXPath("//*[@id = 'form:input_controls']");
+ assertEquals(1, nodes.size());
+ span = (HtmlElement) nodes.get(0);
+ assertEquals("rf-ii-d-s rf-ii-c-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
+ }
+
+ @After
+ public void tearDown() {
+ environment.release();
+ environment = null;
+ }
+}
Added: trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml
===================================================================
--- trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml (rev 0)
+++ trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml 2010-08-20 14:14:43 UTC (rev 18849)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+ version="2.0">
+
+ <managed-bean>
+ <managed-bean-name>dataBean</managed-bean-name>
+ <managed-bean-class>org.richfaces.renderkit.DataBean</managed-bean-class>
+ <managed-bean-scope>request</managed-bean-scope>
+ </managed-bean>
+
+</faces-config>
\ No newline at end of file
Added: trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml
===================================================================
--- trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml (rev 0)
+++ trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml 2010-08-20 14:14:43 UTC (rev 18849)
@@ -0,0 +1,26 @@
+<!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:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:in="http://richfaces.org/input">
+<f:view contentType="text/html" />
+
+<h:head>
+ <title>Richfaces InplaceInput</title>
+</h:head>
+
+<h:body>
+ <h:form id="form">
+ <in:inplaceInput id="input_default" value="#{dataBean.value}"/>
+
+ <in:inplaceInput id="input_controls" showControls="true" value="#{dataBean.value}"/>
+
+ <in:inplaceInput id="input_edit" state="edit" showControls="true" value="#{dataBean.value}"/>
+
+ <h:panelGroup id="panel">
+ <!-- click here for blur -->
+ </h:panelGroup>
+ </h:form>
+</h:body>
+</html>
More information about the richfaces-svn-commits
mailing list