Author: lfryc(a)redhat.com
Date: 2011-03-11 04:39:22 -0500 (Fri, 11 Mar 2011)
New Revision: 22154
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/AbstractMetamerTest.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jAjax/AbstractTestCommand.java
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jAjax/TestHCommandButton.java
Log:
added abstract ReloadTester and introduced tests for HCommandButton (RFPL-1079)
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/AbstractMetamerTest.java
===================================================================
---
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/AbstractMetamerTest.java 2011-03-11
05:28:00 UTC (rev 22153)
+++
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/AbstractMetamerTest.java 2011-03-11
09:39:22 UTC (rev 22154)
@@ -89,13 +89,13 @@
protected TextRetriever retrieveStatusChecker =
retrieveText.locator(jq("#statusCheckerOutput"));
protected PhaseInfo phaseInfo = new PhaseInfo();
protected LocatorReference<JQueryLocator> attributesRoot = new
LocatorReference<JQueryLocator>(
- pjq("span[id$=:attributes:panel]"));
+ pjq("span[id$=:attributes:panel]"));
/**
* timeout in miliseconds
*/
public static final long TIMEOUT = 5000;
@Inject
- @Templates({"plain", "richDataTable1", "a4jRepeat2",
"hDataTable1", "uiRepeat2"})
+ @Templates({ "plain", "richDataTable1", "a4jRepeat2",
"hDataTable1", "uiRepeat2" })
private TemplatesList template;
/**
@@ -204,7 +204,7 @@
selenium.fireEvent(element, event);
waitGui.failWith("Attribute on" + attributeName + " does not work
correctly").until(
- new EventFiredCondition(event));
+ new EventFiredCondition(event));
}
/**
@@ -266,7 +266,7 @@
selenium.getEval(new JavaScript("window.metamerEvents =
\"\";"));
}
-
+
public void testRequestEventsBeforeByAlert(String... events) {
for (String event : events) {
ReferencedLocator<JQueryLocator> input = ref(attributesRoot,
"input[type=text][id$=on{0}Input]");
@@ -279,27 +279,27 @@
public void testRequestEventsAfter(String... events) {
String[] actualEvents = selenium.getEval(new
JavaScript("window.metamerEvents")).split(" ");
assertEquals(
- actualEvents,
- events,
- format("The events ({0}) don't came in right order ({1})",
Arrays.deepToString(actualEvents),
+ actualEvents,
+ events,
+ format("The events ({0}) don't came in right order ({1})",
Arrays.deepToString(actualEvents),
Arrays.deepToString(events)));
}
-
+
public void testRequestEventsAfterByAlert(String... events) {
List<String> list = new LinkedList<String>();
-
+
for (int i = 0; i < events.length; i++) {
waitGui.dontFail().until(alertPresent);
if (selenium.isAlertPresent()) {
list.add(selenium.getAlert());
}
}
-
+
String[] actualEvents = list.toArray(new String[list.size()]);
assertEquals(
- actualEvents,
- events,
- format("The events ({0}) don't came in right order ({1})",
Arrays.deepToString(actualEvents),
+ actualEvents,
+ events,
+ format("The events ({0}) don't came in right order ({1})",
Arrays.deepToString(actualEvents),
Arrays.deepToString(events)));
}
@@ -398,7 +398,7 @@
selenium.waitForPageToLoad();
assertTrue(selenium.getAttribute(attr).contains(value), "Attribute " +
attribute + " should contain \"" + value
- + "\".");
+ + "\".");
}
/**
@@ -445,4 +445,37 @@
selenium.fireEvent(target, event);
}
}
+
+ /**
+ * Abstract ReloadTester for testing
+ *
+ * @param <T>
+ * the type of input values which will be set, sent and then verified
+ */
+ public abstract class ReloadTester<T> {
+
+ public abstract void doRequest(T inputValue);
+
+ public abstract void verifyResponse(T inputValue);
+
+ public abstract T[] getInputValues();
+
+ public void testRerenderAll() {
+ for (T inputValue : getInputValues()) {
+ doRequest(inputValue);
+ verifyResponse(inputValue);
+ AbstractMetamerTest.this.rerenderAll();
+ verifyResponse(inputValue);
+ }
+ }
+
+ public void testFullPageRefresh() {
+ for (T inputValue : getInputValues()) {
+ doRequest(inputValue);
+ verifyResponse(inputValue);
+ AbstractMetamerTest.this.fullPageRefresh();
+ verifyResponse(inputValue);
+ }
+ }
+ }
}
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jAjax/AbstractTestCommand.java
===================================================================
---
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jAjax/AbstractTestCommand.java 2011-03-11
05:28:00 UTC (rev 22153)
+++
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jAjax/AbstractTestCommand.java 2011-03-11
09:39:22 UTC (rev 22154)
@@ -46,11 +46,13 @@
private JQueryLocator output1 = pjq("div[id$=output1]");
private JQueryLocator output2 = pjq("div[id$=output2]");
+ private LocalReloadTester reloadTester = new LocalReloadTester();
+
public void testClick(JQueryLocator command, String text) {
selenium.type(input, text);
guardXhr(selenium).click(command);
String outputValue = waitGui.failWith("Page was not
updated").waitForChangeAndReturn("",
- retrieveText.locator(output1));
+ retrieveText.locator(output1));
assertEquals(outputValue, text, "Wrong output1");
assertEquals(selenium.getText(output2), text, "Wrong output2");
@@ -70,7 +72,7 @@
assertEquals(selenium.getText(output1), "", "Output should not
change");
phaseInfo.assertPhases(PhaseId.RESTORE_VIEW, PhaseId.APPLY_REQUEST_VALUES,
PhaseId.PROCESS_VALIDATIONS,
- PhaseId.RENDER_RESPONSE);
+ PhaseId.RENDER_RESPONSE);
phaseInfo.assertListener(PhaseId.PROCESS_VALIDATIONS, "listener
invoked");
}
@@ -97,7 +99,7 @@
selenium.type(input, "RichFaces 4");
guardHttp(selenium).click(command);
-
+
assertEquals(selenium.getText(output1), "RichFaces 4", "Output1
should not change");
assertEquals(selenium.getText(output2), "RichFaces 4", "Output2
should not change");
}
@@ -134,7 +136,7 @@
assertEquals(selenium.getText(output1), "RichFaces 4", "Output
should change");
phaseInfo.assertPhases(PhaseId.RESTORE_VIEW, PhaseId.APPLY_REQUEST_VALUES,
PhaseId.PROCESS_VALIDATIONS,
- PhaseId.UPDATE_MODEL_VALUES, PhaseId.INVOKE_APPLICATION,
PhaseId.RENDER_RESPONSE);
+ PhaseId.UPDATE_MODEL_VALUES, PhaseId.INVOKE_APPLICATION,
PhaseId.RENDER_RESPONSE);
phaseInfo.assertListener(PhaseId.APPLY_REQUEST_VALUES, "listener
invoked");
}
@@ -154,7 +156,7 @@
assertEquals(selenium.getText(output1), "", "Output should not
change");
phaseInfo.assertPhases(PhaseId.RESTORE_VIEW, PhaseId.APPLY_REQUEST_VALUES,
PhaseId.PROCESS_VALIDATIONS,
- PhaseId.RENDER_RESPONSE);
+ PhaseId.RENDER_RESPONSE);
phaseInfo.assertListener(PhaseId.APPLY_REQUEST_VALUES, "listener
invoked");
}
@@ -203,7 +205,7 @@
selenium.type(input, "RichFaces 4");
guardXhr(selenium).click(command);
String outputValue = waitGui.failWith("Page was not
updated").waitForChangeAndReturn("",
- retrieveText.locator(output1));
+ retrieveText.locator(output1));
assertEquals(outputValue, "RichFaces 4", "Wrong output1");
assertEquals(selenium.getText(output2), "", "Wrong
output2");
@@ -215,6 +217,38 @@
String statusCheckerTime = selenium.getText(statusChecker);
guardXhr(selenium).click(command);
- waitGui.failWith("Attribute status doesn't
work").waitForChange(statusCheckerTime, retrieveText.locator(statusChecker));
+ waitGui.failWith("Attribute status doesn't
work").waitForChange(statusCheckerTime,
+ retrieveText.locator(statusChecker));
}
+
+ public void testRerenderAll(JQueryLocator command) {
+ reloadTester.command = command;
+ reloadTester.testRerenderAll();
+ }
+
+ public void testFullPageRefresh(JQueryLocator command) {
+ reloadTester.command = command;
+ reloadTester.testFullPageRefresh();
+ }
+
+ private class LocalReloadTester extends ReloadTester<String> {
+ JQueryLocator command;
+
+ @Override
+ public void doRequest(String inputValue) {
+ selenium.type(input, inputValue);
+ guardXhr(selenium).click(command);
+ }
+
+ @Override
+ public void verifyResponse(String inputValue) {
+ assertEquals(selenium.getText(output1), inputValue, "Wrong
output1");
+ assertEquals(selenium.getText(output2), inputValue, "Wrong
output2");
+ }
+
+ @Override
+ public String[] getInputValues() {
+ return new String[] { "RichFaces 3", "RichFaces 4" };
+ }
+ };
}
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jAjax/TestHCommandButton.java
===================================================================
---
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jAjax/TestHCommandButton.java 2011-03-11
05:28:00 UTC (rev 22153)
+++
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/a4jAjax/TestHCommandButton.java 2011-03-11
09:39:22 UTC (rev 22154)
@@ -105,4 +105,14 @@
public void testStatus() {
testStatus(button);
}
+
+ @Test
+ public void testFullPageRefresh() {
+ testFullPageRefresh(button);
+ }
+
+ @Test
+ public void testRerenderAll() {
+ testRerenderAll(button);
+ }
}