Repository: wicket Updated Branches: refs/heads/master 0102b9db3 -> 273127d8c
WICKET-5575 Add support in FormTester#submit(String|Component) for Ajax submitters (cherry picked from commit 6fc822d0b76c4c45e8bf1154566f130cb0cc305b) Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/273127d8 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/273127d8 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/273127d8 Branch: refs/heads/master Commit: 273127d8cb28a8978e232a41f9a3bc30717df012 Parents: 0102b9d Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Tue May 20 11:03:58 2014 +0300 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Tue May 20 11:04:22 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/273127d8/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 9a00df8..91c8890 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 @@ -25,6 +25,8 @@ import java.util.List; 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; @@ -740,8 +742,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); } /** @@ -764,7 +771,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/273127d8/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/273127d8/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 d6c3045..e8c1079 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; @@ -43,6 +44,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; @@ -1200,18 +1202,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);
