[richfaces-svn-commits] JBoss Rich Faces SVN: r18833 - in modules/tests/metamer/trunk: ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jStatus and 1 other directories.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Thu Aug 19 19:24:47 EDT 2010
Author: lfryc at redhat.com
Date: 2010-08-19 19:24:46 -0400 (Thu, 19 Aug 2010)
New Revision: 18833
Added:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jStatus/TestReferencedUsage.java
Modified:
modules/tests/metamer/trunk/application/src/main/webapp/components/a4jStatus/referencedUsage.xhtml
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jStatus/AbstracStatusTest.java
modules/tests/metamer/trunk/ftest-source/src/main/resources/org/richfaces/tests/metamer/ftest/a4jStatus/status-halt.js
Log:
a4j:status - added tests for referenced usage (RFPL-735)
Modified: modules/tests/metamer/trunk/application/src/main/webapp/components/a4jStatus/referencedUsage.xhtml
===================================================================
--- modules/tests/metamer/trunk/application/src/main/webapp/components/a4jStatus/referencedUsage.xhtml 2010-08-19 23:23:34 UTC (rev 18832)
+++ modules/tests/metamer/trunk/application/src/main/webapp/components/a4jStatus/referencedUsage.xhtml 2010-08-19 23:24:46 UTC (rev 18833)
@@ -46,7 +46,7 @@
<h:panelGrid columns="2">
<h:commandButton id="button1" value="Named status 1" onclick="statusFunction1(); return false;" />
- <a4j:status name="status1">
+ <a4j:status id="status1" name="status1">
<f:facet name="start">
<h:outputText id="status1TextStart" style="font-size: large; color: red;" value="START" />
</f:facet>
@@ -61,7 +61,7 @@
</a4j:status>
<h:commandButton id="button2" value="Named status 2" onclick="statusFunction2(); return false;" />
- <a4j:status name="status2">
+ <a4j:status id="status2" name="status2">
<f:facet name="start">
<h:outputText id="status2TextStart" style="font-size: large; color: red;" value="START" />
</f:facet>
Modified: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jStatus/AbstracStatusTest.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jStatus/AbstracStatusTest.java 2010-08-19 23:23:34 UTC (rev 18832)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jStatus/AbstracStatusTest.java 2010-08-19 23:24:46 UTC (rev 18833)
@@ -64,11 +64,11 @@
}
void waitForHalt() {
- selenium.waitForCondition(js("selenium.browserbot.getCurrentWindow().Metamer.halt == true"));
+ selenium.waitForCondition(js("selenium.browserbot.getCurrentWindow().Metamer.waitForHalt()"));
}
void unhalt() {
- selenium.getEval(js("selenium.browserbot.getCurrentWindow().Metamer.halt = false"));
+ selenium.getEval(js("selenium.browserbot.getCurrentWindow().Metamer.unhalt()"));
}
void enableHalt() {
Added: modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jStatus/TestReferencedUsage.java
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jStatus/TestReferencedUsage.java (rev 0)
+++ modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jStatus/TestReferencedUsage.java 2010-08-19 23:24:46 UTC (rev 18833)
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * 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.a4jStatus;
+
+import static org.jboss.test.selenium.utils.URLUtils.buildUrl;
+import static org.testng.Assert.assertEquals;
+
+import java.net.URL;
+
+import org.jboss.test.selenium.locator.JQueryLocator;
+import org.jboss.test.selenium.waiting.retrievers.TextRetriever;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+/**
+ * @author <a href="mailto:lfryc at redhat.com">Lukas Fryc</a>
+ * @version $Revision$
+ */
+public class TestReferencedUsage extends AbstracStatusTest {
+
+ JQueryLocator status1 = pjq("span[id$=status1]");
+ JQueryLocator status2 = pjq("span[id$=status2]");
+
+ TextRetriever retrieveStatus1 = retrieveText.locator(status1);
+ TextRetriever retrieveStatus2 = retrieveText.locator(status2);
+
+ @Override
+ public URL getTestUrl() {
+ return buildUrl(contextPath, "faces/components/a4jStatus/referencedUsage.xhtml");
+ }
+
+ @BeforeMethod
+ public void installStatusExtensions() {
+ super.installStatusExtensions();
+ }
+
+ @Test
+ public void testClickBothButtonsInSequence() {
+ enableHalt();
+ selenium.click(button1);
+ waitForHalt();
+ assertEquals(retrieveStatus1.retrieve(), "START");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ unhalt();
+ waitAjax.waitForChange("START", retrieveStatus1);
+ selenium.click(button2);
+ waitForHalt();
+ assertEquals(retrieveStatus1.retrieve(), "STOP");
+ assertEquals(retrieveStatus2.retrieve(), "START");
+ unhalt();
+ waitAjax.waitForChange("START", retrieveStatus2);
+ assertEquals(retrieveStatus1.retrieve(), "STOP");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ disableHalt();
+ }
+
+ @Test
+ public void testClickBothButtonsImmediately() {
+ enableHalt();
+ selenium.click(button1);
+ selenium.click(button2);
+ waitForHalt();
+ assertEquals(retrieveStatus1.retrieve(), "START");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ unhalt();
+ waitForHalt();
+ assertEquals(retrieveStatus1.retrieve(), "STOP");
+ assertEquals(retrieveStatus2.retrieve(), "START");
+ unhalt();
+ waitAjax.waitForChange("START", retrieveStatus2);
+ assertEquals(retrieveStatus1.retrieve(), "STOP");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ disableHalt();
+ }
+
+ @Test
+ public void testClickFirstButtonThenSecondButtonThenAgainFirstButtonImmediately() {
+ enableHalt();
+ selenium.click(button1);
+ selenium.click(button2);
+ selenium.click(button1);
+ waitForHalt();
+ assertEquals(retrieveStatus1.retrieve(), "START");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ unhalt();
+ waitForHalt();
+ assertEquals(retrieveStatus1.retrieve(), "START");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ unhalt();
+ waitAjax.waitForChange("START", retrieveStatus1);
+ assertEquals(retrieveStatus1.retrieve(), "STOP");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ disableHalt();
+ }
+
+ @Test
+ public void testDoubleClick() {
+ enableHalt();
+ selenium.click(button1);
+ selenium.click(button2);
+ selenium.click(button1);
+ waitForHalt();
+ assertEquals(retrieveStatus1.retrieve(), "START");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ unhalt();
+ waitForHalt();
+ assertEquals(retrieveStatus1.retrieve(), "START");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ unhalt();
+ waitAjax.waitForChange("START", retrieveStatus1);
+ assertEquals(retrieveStatus1.retrieve(), "STOP");
+ assertEquals(retrieveStatus2.retrieve(), "STOP");
+ disableHalt();
+ }
+
+}
Modified: modules/tests/metamer/trunk/ftest-source/src/main/resources/org/richfaces/tests/metamer/ftest/a4jStatus/status-halt.js
===================================================================
--- modules/tests/metamer/trunk/ftest-source/src/main/resources/org/richfaces/tests/metamer/ftest/a4jStatus/status-halt.js 2010-08-19 23:23:34 UTC (rev 18832)
+++ modules/tests/metamer/trunk/ftest-source/src/main/resources/org/richfaces/tests/metamer/ftest/a4jStatus/status-halt.js 2010-08-19 23:24:46 UTC (rev 18833)
@@ -20,31 +20,55 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
var Metamer = {
+ halts : new Array(),
+ sequenceId : 0,
+ haltIterator : 0,
haltEnabled : false,
- halt : false,
- callback : null,
- object : null,
- content : null,
- wait : function() {
- if (Metamer.haltEnabled && Metamer.halt) {
- setTimeout("Metamer.wait()", 100);
+ passes : 0,
+ wait : function(metamerHalt) {
+ Metamer.halts.push(metamerHalt);
+ Metamer._wait(metamerHalt.id);
+ },
+ _wait : function(id) {
+ var metamerHalt = Metamer.halts[id];
+ if (metamerHalt.halt) {
+ setTimeout("Metamer._wait(" + id + ")", 100);
} else {
- Metamer.halt = false;
- Metamer.callback();
+ metamerHalt.callback(metamerHalt.xhr, metamerHalt.content);
}
+ },
+ unhalt : function() {
+ var metamerHalt = Metamer.halts[Metamer.haltIterator];
+ Metamer.haltIterator += 1;
+ metamerHalt.halt = false;
+ },
+ isHalted : function() {
+ return Metamer.sequenceId > Metamer.haltIterator;
+ },
+ waitForHalt : function() {
+ return Metamer.sequenceId == 1 + Metamer.haltIterator;
}
};
+var MetamerHalt = function(xhr, content, callback) {
+ this.halt = true;
+ this.xhr = xhr;
+ this.content = content;
+ this.callback = callback;
+ this.id = Metamer.sequenceId++;
+}
+
Metamer.XHRWrapperInjection = {
send : RichFacesSelenium.XHRWrapper.prototype.send
};
RichFacesSelenium.XHRWrapper.prototype.send = function(content) {
- Metamer.halt = true;
- Metamer.object = this;
- Metamer.content = content;
- Metamer.callback = function() {
- Metamer.XHRWrapperInjection.send.call(Metamer.object, Metamer.content);
- };
- Metamer.wait();
+ if (Metamer.haltEnabled) {
+ var metamerHalt = new MetamerHalt(this, content, function(xhr, content1) {
+ Metamer.XHRWrapperInjection.send.call(xhr, content1);
+ });
+ Metamer.wait(metamerHalt);
+ } else {
+ Metamer.XHRWrapperInjection.send.call(this, content);
+ }
};
\ No newline at end of file
More information about the richfaces-svn-commits
mailing list