You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jr...@apache.org on 2010/08/13 23:02:08 UTC

svn commit: r985365 - in /wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester: BaseWicketTester.java WicketTester.java

Author: jrthomerson
Date: Fri Aug 13 21:02:08 2010
New Revision: 985365

URL: http://svn.apache.org/viewvc?rev=985365&view=rev
Log:
add convenience method on WicketTester for asserting that certain messages are rendered in a particular FeedbackPanel

Modified:
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=985365&r1=985364&r2=985365&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Fri Aug 13 21:02:08 2010
@@ -26,13 +26,13 @@ import java.util.List;
 import java.util.regex.Pattern;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.Component.IVisitor;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.RequestCycle;
 import org.apache.wicket.Session;
 import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.Component.IVisitor;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
@@ -984,9 +984,8 @@ public class BaseWicketTester extends Mo
 	public Result hasNoErrorMessage()
 	{
 		List<Serializable> messages = getMessages(FeedbackMessage.ERROR);
-		return isTrue(
-			"expect no error message, but contains\n" + WicketTesterHelper.asLined(messages),
-			messages.isEmpty());
+		return isTrue("expect no error message, but contains\n" +
+			WicketTesterHelper.asLined(messages), messages.isEmpty());
 	}
 
 	/**
@@ -997,9 +996,8 @@ public class BaseWicketTester extends Mo
 	public Result hasNoInfoMessage()
 	{
 		List<Serializable> messages = getMessages(FeedbackMessage.INFO);
-		return isTrue(
-			"expect no info message, but contains\n" + WicketTesterHelper.asLined(messages),
-			messages.isEmpty());
+		return isTrue("expect no info message, but contains\n" +
+			WicketTesterHelper.asLined(messages), messages.isEmpty());
 	}
 
 	/**
@@ -1468,7 +1466,7 @@ public class BaseWicketTester extends Mo
 		return Result.fail(message);
 	}
 
-	private Result isEqual(Object expected, Object actual)
+	protected final Result isEqual(Object expected, Object actual)
 	{
 		if (expected == null && actual == null)
 		{
@@ -1499,7 +1497,7 @@ public class BaseWicketTester extends Mo
 		return Result.pass();
 	}
 
-	private void fail(String message)
+	protected final void fail(String message)
 	{
 		throw new WicketRuntimeException(message);
 	}

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java?rev=985365&r1=985364&r2=985365&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java Fri Aug 13 21:02:08 2010
@@ -33,10 +33,13 @@ import org.apache.wicket.Page;
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.feedback.FeedbackMessage;
+import org.apache.wicket.feedback.IFeedback;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.protocol.http.HttpSessionStore;
 import org.apache.wicket.protocol.http.MockHttpServletResponse;
 import org.apache.wicket.protocol.http.SecondLevelCacheSessionStore;
@@ -442,6 +445,40 @@ public class WicketTester extends BaseWi
 	}
 
 	/**
+	 * Assert that a particular feedback panel is rendering certain messages.
+	 * 
+	 * NOTE: this casts the component at the specified path to a {@link FeedbackPanel}, so it will
+	 * not work with custom {@link IFeedback} implementations unless you are subclassing
+	 * {@link FeedbackPanel}
+	 * 
+	 * @param path
+	 *            path to the feedback panel
+	 * @param messages
+	 *            messages expected to be rendered
+	 */
+	public void assertFeedback(String path, String[] messages)
+	{
+		final FeedbackPanel fbp = (FeedbackPanel)getComponentFromLastRenderedPage(path);
+		final IModel<List<FeedbackMessage>> model = fbp.getFeedbackMessagesModel();
+		final List<FeedbackMessage> renderedMessages = model.getObject();
+		if (renderedMessages == null)
+		{
+			fail("feedback panel at path [" + path + "] returned null messages");
+		}
+		if (messages.length != renderedMessages.size())
+		{
+			fail("you expected " + messages.length + " messages for the feedback panel [" + path +
+				"], but there were actually " + renderedMessages.size());
+		}
+		for (int i = 0; i < messages.length && i < renderedMessages.size(); i++)
+		{
+			final String expected = messages[i];
+			final String actual = renderedMessages.get(i).getMessage().toString();
+			assertResult(isEqual(expected, actual));
+		}
+	}
+
+	/**
 	 * Asserts that a <code>Component</code> is invisible.
 	 * 
 	 * @param path