You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/05/20 10:04:22 UTC
git commit: WICKET-5575 Add support in
FormTester#submit(String|Component) for Ajax submitters
Repository: wicket
Updated Branches:
refs/heads/wicket-6.x 6dfd3d9d2 -> 6fc822d0b
WICKET-5575 Add support in FormTester#submit(String|Component) for Ajax submitters
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6fc822d0
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6fc822d0
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6fc822d0
Branch: refs/heads/wicket-6.x
Commit: 6fc822d0b76c4c45e8bf1154566f130cb0cc305b
Parents: 6dfd3d9
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue May 20 11:03:58 2014 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue May 20 11:03:58 2014 +0300
----------------------------------------------------------------------
.../apache/wicket/util/tester/FormTester.java | 27 ++++++++++++++++--
.../wicket/util/tester/MockFormSubmitsPage.java | 23 ++++++++++++++--
.../wicket/util/tester/WicketTesterTest.java | 29 ++++++++++++++++++--
3 files changed, 70 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/6fc822d0/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java b/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java
index 20bacdc..1257648 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java
@@ -27,6 +27,8 @@ import junit.framework.Assert;
import org.apache.wicket.Component;
import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.markup.html.form.AbstractSingleSelectChoice;
import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.markup.html.form.Check;
@@ -741,8 +743,13 @@ public class FormTester
*/
public FormTester submit(final String buttonComponentId)
{
- setValue(buttonComponentId, "marked");
- return submit();
+ Component submitter = getForm().get(buttonComponentId);
+ if (submitter == null)
+ {
+ fail("Cannot submit the form because there is no submitting component with id: " + buttonComponentId);
+ }
+
+ return submit(submitter);
}
/**
@@ -765,7 +772,21 @@ public class FormTester
Args.notNull(buttonComponent, "buttonComponent");
setValue(buttonComponent, "marked");
- return submit();
+
+ if (buttonComponent instanceof AjaxButton || buttonComponent instanceof AjaxSubmitLink)
+ {
+ if (clearFeedbackMessagesBeforeSubmit)
+ {
+ tester.clearFeedbackMessages();
+ }
+ tester.getRequest().setUseMultiPartContentType(workingForm.isMultiPart());
+ tester.executeAjaxEvent(buttonComponent, "click");
+ return this;
+ }
+ else
+ {
+ return submit();
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/6fc822d0/wicket-core/src/test/java/org/apache/wicket/util/tester/MockFormSubmitsPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/util/tester/MockFormSubmitsPage.java b/wicket-core/src/test/java/org/apache/wicket/util/tester/MockFormSubmitsPage.java
index f7d790e..a4dc56b 100644
--- a/wicket-core/src/test/java/org/apache/wicket/util/tester/MockFormSubmitsPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/util/tester/MockFormSubmitsPage.java
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.util.tester;
+import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.markup.html.WebPage;
@@ -49,14 +50,30 @@ public class MockFormSubmitsPage extends WebPage
form.add(new AjaxButton("ajaxButton")
{
-
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ MockFormSubmitsPage.this.onAjaxButtonSubmit(target, form);
+ }
});
form.add(new SubmitLink("link"));
form.add(new AjaxSubmitLink("ajaxlink")
{
-
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ MockFormSubmitsPage.this.onAjaxSubmitLinkSubmit(target, form);
+ }
});
}
-}
\ No newline at end of file
+
+ protected void onAjaxSubmitLinkSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ }
+
+ protected void onAjaxButtonSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/6fc822d0/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java b/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
index 2014c94..320705d 100644
--- a/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
@@ -18,6 +18,7 @@ package org.apache.wicket.util.tester;
import java.util.List;
import java.util.Locale;
+import java.util.concurrent.atomic.AtomicBoolean;
import javax.servlet.http.HttpServletResponse;
@@ -42,6 +43,7 @@ import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.Link;
@@ -1197,18 +1199,39 @@ public class WicketTesterTest extends WicketTestCase
@Test
public void formSubmitSendsFormInputInRequest()
{
- MockFormSubmitsPage page = new MockFormSubmitsPage();
+ final AtomicBoolean ajaxButtonSubmitted = new AtomicBoolean(false);
+ final AtomicBoolean ajaxSubmitLinkSubmitted = new AtomicBoolean(false);
+
+ MockFormSubmitsPage page = new MockFormSubmitsPage()
+ {
+ @Override
+ protected void onAjaxSubmitLinkSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ ajaxSubmitLinkSubmitted.set(true);
+ }
+
+ @Override
+ protected void onAjaxButtonSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ ajaxButtonSubmitted.set(true);
+ }
+ };
tester.startPage(page);
tester.newFormTester("form").submit();
assertEquals("a text value", page.text);
- tester.executeAjaxEvent(page.get("form:ajaxButton"), "click");
+ assertFalse(ajaxButtonSubmitted.get());
+ tester.newFormTester("form").submit("ajaxButton");
assertEquals("a text value", page.text);
+ assertTrue(ajaxButtonSubmitted.get());
- tester.clickLink("form:ajaxlink");
+ assertFalse(ajaxSubmitLinkSubmitted.get());
+ Component submitter = page.form.get("ajaxlink");
+ tester.newFormTester("form").submit(submitter);
assertEquals("a text value", page.text);
+ assertTrue(ajaxSubmitLinkSubmitted.get());
tester.clickLink("form:link");
assertEquals("a text value", page.text);