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