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 <[email protected]> Authored: Tue May 20 11:03:58 2014 +0300 Committer: Martin Tzvetanov Grigorov <[email protected]> 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);
