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);

Reply via email to