Author: lfryc(a)redhat.com
Date: 2011-01-23 15:32:16 -0500 (Sun, 23 Jan 2011)
New Revision: 21163
Added:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeHandleLoading.java
Modified:
modules/tests/metamer/trunk/application/src/main/webapp/components/richTree/simple.xhtml
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TestTreeSimple.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeHandle.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeModel.java
Log:
rich:tree - automated Simple sample - handleLoading facet capabilities (RFPL-935)
Modified:
modules/tests/metamer/trunk/application/src/main/webapp/components/richTree/simple.xhtml
===================================================================
---
modules/tests/metamer/trunk/application/src/main/webapp/components/richTree/simple.xhtml 2011-01-23
20:31:19 UTC (rev 21162)
+++
modules/tests/metamer/trunk/application/src/main/webapp/components/richTree/simple.xhtml 2011-01-23
20:32:16 UTC (rev 21163)
@@ -211,7 +211,7 @@
<h:panelGrid columns="2">
<h:outputLabel value="Test Loading Facet:" />
- <h:selectBooleanCheckbox
value="#{richTreeBean.testLoadingFacet}">
+ <h:selectBooleanCheckbox id="loadingFacet"
value="#{richTreeBean.testLoadingFacet}">
<a4j:ajax render="#{nestedComponentId}" />
</h:selectBooleanCheckbox>
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TestTreeSimple.java
===================================================================
---
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TestTreeSimple.java 2011-01-23
20:31:19 UTC (rev 21162)
+++
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TestTreeSimple.java 2011-01-23
20:32:16 UTC (rev 21163)
@@ -44,11 +44,13 @@
import java.net.URL;
+import org.jboss.cheiron.halt.XHRHalter;
import org.jboss.test.selenium.dom.Event;
import org.jboss.test.selenium.locator.ElementLocator;
import org.jboss.test.selenium.locator.ExtendedLocator;
import org.jboss.test.selenium.locator.JQueryLocator;
import org.jboss.test.selenium.request.RequestType;
+import org.jboss.test.selenium.waiting.selenium.SeleniumCondition;
import org.richfaces.component.SwitchType;
import org.richfaces.tests.metamer.ftest.AbstractMetamerTest;
import org.richfaces.tests.metamer.ftest.annotations.Inject;
@@ -84,6 +86,7 @@
new TreeNodeAttributes(pjq("span[id*=treeNode3Attributes]")) };
JQueryLocator expandAll = jq("input:submit[id$=expandAll]");
+ JQueryLocator loadingFacet = jq("input:checkbox[id$=loadingFacet]");
@Override
public URL getTestUrl() {
@@ -300,6 +303,43 @@
}
}
+ @Test
+ public void testLoadingFacet() {
+ setLoadingFacet(true);
+ tree.setToggleType(null);
+ XHRHalter.enable();
+
+ XHRHalter xhrHalter = null;
+
+ for (int index : new int[] { 2, 3 }) {
+ treeNode = (index == 2) ? tree.getNode(index) : treeNode.getNode(index);
+
+ assertFalse(treeNode.getHandleLoading().isVisible());
+ assertTrue(treeNode.getHandle().isCollapsed());
+ assertFalse(treeNode.getHandle().isExpanded());
+ treeNode.expand();
+ assertTrue(treeNode.getHandleLoading().isVisible());
+ assertTrue(treeNode.getHandleLoading().getImageUrl().endsWith(IMAGE_URL));
+ assertFalse(treeNode.getHandle().isCollapsed());
+ assertFalse(treeNode.getHandle().isExpanded());
+
+ if (xhrHalter == null) {
+ xhrHalter = XHRHalter.getHandleBlocking();
+ }
+ xhrHalter.complete();
+
+ waitModel.until(treeNodeExpanded);
+ }
+ }
+
+ SeleniumCondition treeNodeExpanded = new SeleniumCondition() {
+
+ @Override
+ public boolean isTrue() {
+ return treeNode.isExpanded();
+ }
+ };
+
private void fireEvent(ElementLocator<?> target, Event eventToFire, Event
eventToSetup) {
RequestType requestType = (eventToFire == eventToSetup) ? RequestType.XHR :
RequestType.NONE;
if (eventToFire == MOUSEDOWN) {
@@ -316,6 +356,13 @@
}
}
+ private void setLoadingFacet(boolean turnOn) {
+ boolean checked = Boolean.valueOf(selenium.getValue(loadingFacet));
+ if (checked != turnOn) {
+ guardXhr(selenium).click(loadingFacet);
+ }
+ }
+
private void expandAll() {
guardXhr(selenium).click(expandAll);
}
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeHandle.java
===================================================================
---
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeHandle.java 2011-01-23
20:31:19 UTC (rev 21162)
+++
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeHandle.java 2011-01-23
20:32:16 UTC (rev 21163)
@@ -43,14 +43,18 @@
}
public boolean isExpanded() {
- return selenium.belongsClass(this, classHandleExpanded);
+ return isVisible() && selenium.belongsClass(this, classHandleExpanded);
}
public boolean isCollapsed() {
- return selenium.belongsClass(this, classHandleCollapsed);
+ return isVisible() && selenium.belongsClass(this, classHandleCollapsed);
}
public boolean isLeaf() {
- return selenium.belongsClass(this, classHandleLeaf);
+ return isVisible() && selenium.belongsClass(this, classHandleLeaf);
}
+
+ private boolean isVisible() {
+ return selenium.isVisible(this);
+ }
}
Copied:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeHandleLoading.java
(from rev 21162,
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeHandle.java)
===================================================================
---
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeHandleLoading.java
(rev 0)
+++
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeHandleLoading.java 2011-01-23
20:32:16 UTC (rev 21163)
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * 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.tests.metamer.ftest.richTree;
+
+import static org.jboss.test.selenium.locator.LocatorFactory.jq;
+
+import org.jboss.test.selenium.framework.AjaxSelenium;
+import org.jboss.test.selenium.framework.AjaxSeleniumProxy;
+import org.jboss.test.selenium.locator.Attribute;
+import org.jboss.test.selenium.locator.AttributeLocator;
+import org.jboss.test.selenium.locator.JQueryLocator;
+import org.richfaces.tests.metamer.ftest.model.AbstractModel;
+
+/**
+ * @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
+ * @version $Revision$
+ */
+public class TreeNodeHandleLoading extends AbstractModel<JQueryLocator> {
+
+ AjaxSelenium selenium = AjaxSeleniumProxy.getInstance();
+
+ public TreeNodeHandleLoading(JQueryLocator root) {
+ super(root);
+ }
+
+ public String getImageUrl() {
+ AttributeLocator<JQueryLocator> imageSrc =
this.getChild(jq("img")).getAttribute(Attribute.SRC);
+ return selenium.getAttribute(imageSrc);
+ }
+
+ public boolean isVisible() {
+ return selenium.isVisible(this);
+ }
+}
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeModel.java
===================================================================
---
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeModel.java 2011-01-23
20:31:19 UTC (rev 21162)
+++
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/richTree/TreeNodeModel.java 2011-01-23
20:32:16 UTC (rev 21163)
@@ -51,12 +51,13 @@
private ReferencedLocator<JQueryLocator> content = ref(treeNode, ">
span.rf-trn-cnt");
private ReferencedLocator<JQueryLocator> icon = ref(content, ">
.rf-trn-ico");
private ReferencedLocator<JQueryLocator> label = ref(content, ">
.rf-trn-lbl");
+ private ReferencedLocator<JQueryLocator> handleLoading = ref(treeNode,
"> .rf-trn-hnd-ldn-fct");
public TreeNodeModel(JQueryLocator root, TreeModel tree) {
super(root);
this.tree = tree;
}
-
+
public ExtendedLocator<JQueryLocator> getTreeNode() {
return treeNode;
}
@@ -64,6 +65,10 @@
public TreeNodeHandle getHandle() {
return new TreeNodeHandle(handle.getReferenced());
}
+
+ public TreeNodeHandleLoading getHandleLoading() {
+ return new TreeNodeHandleLoading(handleLoading.getReferenced());
+ }
public TreeNodeIcon getIcon() {
return new TreeNodeIcon(icon.getReferenced());
@@ -92,15 +97,19 @@
public String getLabelText() {
return selenium.getText(label);
}
-
+
public void expand() {
- guard(selenium, getRequestType(tree.getToggleType())).click(getHandle());
+ if (tree.getToggleType() == null) {
+ selenium.click(getHandle());
+ } else {
+ guard(selenium, getRequestType(tree.getToggleType())).click(getHandle());
+ }
}
-
+
public void select() {
- guard(selenium, getRequestType(tree.getSelectionType())).clickAt(getLabel(), new
Point(0,0));
+ guard(selenium, getRequestType(tree.getSelectionType())).clickAt(getLabel(), new
Point(0, 0));
}
-
+
private RequestType getRequestType(SwitchType switchType) {
switch (switchType) {
case ajax: