Author: jrthomerson
Date: Fri Aug 13 21:01:59 2010
New Revision: 985364

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

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=985364&r1=985363&r2=985364&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
 Fri Aug 13 21:01:59 2010
@@ -1349,9 +1349,8 @@ public class BaseWicketTester
        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());
        }
 
        /**
@@ -1362,9 +1361,8 @@ public class BaseWicketTester
        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());
        }
 
        /**
@@ -1765,7 +1763,7 @@ public class BaseWicketTester
         * @param actual
         * @return
         */
-       private Result isEqual(Object expected, Object actual)
+       protected final Result isEqual(Object expected, Object actual)
        {
                if (expected == null && actual == null)
                {
@@ -1811,7 +1809,7 @@ public class BaseWicketTester
         * 
         * @param message
         */
-       private void fail(String message)
+       protected final void fail(String message)
        {
                throw new WicketRuntimeException(message);
        }

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java?rev=985364&r1=985363&r2=985364&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
 Fri Aug 13 21:01:59 2010
@@ -30,10 +30,13 @@ import org.apache.wicket.MarkupContainer
 import org.apache.wicket.Page;
 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.WebApplication;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.slf4j.Logger;
@@ -316,6 +319,41 @@ public class WicketTester extends BaseWi
                
WicketTesterHelper.assertEquals(Arrays.asList(expectedInfoMessages), 
actualMessages);
        }
 
+
+       /**
+        * 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.
         * 


Reply via email to