WICKET-4585 WicketTester.assertErrorMessages passes even if the message isn't 
visible on the page
WICKET-5128 Allow for Testing Component relative Feedback-Messages in 
Wicket-Tester


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0c412482
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0c412482
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0c412482

Branch: refs/heads/master
Commit: 0c412482dfba45570fe7b7b0116383e59b3245f6
Parents: ca1c4eb
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Tue Jun 25 15:15:30 2013 +0300
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Tue Jun 25 15:15:30 2013 +0300

----------------------------------------------------------------------
 .../ExactLevelFeedbackMessageFilter.java        |  36 ++++++
 .../apache/wicket/feedback/FeedbackMessage.java |   2 +-
 .../wicket/util/tester/BaseWicketTester.java    |  55 ++++++---
 .../apache/wicket/util/tester/WicketTester.java | 119 +++++++++++++++----
 .../wicket/util/tester/WicketTesterHelper.java  |  13 +-
 .../wicket/util/tester/WicketTesterTest.java    |  25 ++++
 .../ComponentFeedbackResourceTestingPage.html   |   7 ++
 .../ComponentFeedbackResourceTestingPage.java   |  30 +++++
 .../apps_8/TestResourceProvidingLabel.java      |  41 +++++++
 .../TestResourceProvidingLabel.properties       |   3 +
 10 files changed, 279 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/wicket-core/src/main/java/org/apache/wicket/feedback/ExactLevelFeedbackMessageFilter.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/feedback/ExactLevelFeedbackMessageFilter.java
 
b/wicket-core/src/main/java/org/apache/wicket/feedback/ExactLevelFeedbackMessageFilter.java
new file mode 100644
index 0000000..5b6fcd6
--- /dev/null
+++ 
b/wicket-core/src/main/java/org/apache/wicket/feedback/ExactLevelFeedbackMessageFilter.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.feedback;
+
+/**
+ * Filter for accepting feedback messages of a certain error level.
+ */
+public class ExactLevelFeedbackMessageFilter implements IFeedbackMessageFilter
+{
+       private final int level;
+
+       public ExactLevelFeedbackMessageFilter(int level)
+       {
+               this.level = level;
+       }
+
+       @Override
+       public boolean accept(FeedbackMessage message)
+       {
+               return message.getLevel() == level;
+       }
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java 
b/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java
index 9520f6f..fbee466 100644
--- a/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java
+++ b/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java
@@ -59,7 +59,7 @@ public class FeedbackMessage implements IDetachable
        public static final int FATAL = 500;
 
        /** Levels as strings for debugging. */
-       private static final Map<Integer, String> levelStrings = new 
HashMap<Integer, String>();
+       private static final Map<Integer, String> levelStrings = new 
HashMap<>();
 
        static
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
index 8880e29..3e4e178 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
@@ -30,6 +30,7 @@ import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
@@ -68,6 +69,7 @@ import 
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
+import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter;
 import org.apache.wicket.feedback.FeedbackCollector;
 import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.feedback.IFeedbackMessageFilter;
@@ -2012,31 +2014,43 @@ public class BaseWicketTester
         * Asserts no error-level feedback messages.
         * 
         * @return a <code>Result</code>
+        * @see #hasNoFeedbackMessage(int)
         */
        public Result hasNoErrorMessage()
        {
-               List<Serializable> messages = 
getMessages(FeedbackMessage.ERROR);
-               return isTrue(
-                       "expect no error message, but contains\n" + 
WicketTesterHelper.asLined(messages),
-                       messages.isEmpty());
+               return hasNoFeedbackMessage(FeedbackMessage.ERROR);
        }
 
        /**
         * Asserts no info-level feedback messages.
         * 
         * @return a <code>Result</code>
+        * @see #hasNoFeedbackMessage(int)
         */
        public Result hasNoInfoMessage()
        {
-               List<Serializable> messages = getMessages(FeedbackMessage.INFO);
+               return hasNoFeedbackMessage(FeedbackMessage.INFO);
+       }
+
+       /**
+        * Asserts there are no feedback messages with the given level.
+        *
+        * @param level
+        *              the level of the feedback message
+        * @return a <code>Result</code>
+        */
+       public Result hasNoFeedbackMessage(int level)
+       {
+               List<Serializable> messages = getMessages(level);
                return isTrue(
-                       "expect no info message, but contains\n" + 
WicketTesterHelper.asLined(messages),
-                       messages.isEmpty());
+                               String.format("expected no %s message, but 
contains\n%s",
+                                               new FeedbackMessage(null, "", 
level).getLevelAsString().toLowerCase(Locale.ENGLISH), 
WicketTesterHelper.asLined(messages)),
+                               messages.isEmpty());
        }
 
        /**
         * Retrieves <code>FeedbackMessages</code>.
-        * 
+        *
         * @param level
         *            level of feedback message, for example:
         *            <code>FeedbackMessage.DEBUG or FeedbackMessage.INFO.. 
etc</code>
@@ -2045,18 +2059,10 @@ public class BaseWicketTester
         */
        public List<Serializable> getMessages(final int level)
        {
-               List<FeedbackMessage> allMessages = new 
FeedbackCollector(getLastRenderedPage()).collect(new IFeedbackMessageFilter()
-               {
-
-                       @Override
-                       public boolean accept(FeedbackMessage message)
-                       {
-                               return message.getLevel() == level;
-                       }
-               });
+               List<FeedbackMessage> messages = getFeedbackMessages(new 
ExactLevelFeedbackMessageFilter(level));
 
                List<Serializable> actualMessages = Generics.newArrayList();
-               for (FeedbackMessage message : allMessages)
+               for (FeedbackMessage message : messages)
                {
                        actualMessages.add(message.getMessage());
                }
@@ -2064,6 +2070,19 @@ public class BaseWicketTester
        }
 
        /**
+        * Retrieves <code>FeedbackMessages</code>.
+        *
+        * @param filter
+        *            A filter that decides which messages to collect
+        * @return <code>List</code> of messages (as <code>String</code>s)
+        * @see FeedbackMessage
+        */
+       public List<FeedbackMessage> getFeedbackMessages(final 
IFeedbackMessageFilter filter)
+       {
+               return new 
FeedbackCollector(getLastRenderedPage()).collect(filter);
+       }
+
+       /**
         * Dumps the source of last rendered <code>Page</code>.
         */
        public void dumpPage()

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTester.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTester.java 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTester.java
index a8b6032..af16454 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTester.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTester.java
@@ -17,8 +17,9 @@
 package org.apache.wicket.util.tester;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
 import java.io.Serializable;
@@ -33,17 +34,22 @@ import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
+import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter;
 import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.feedback.IFeedback;
+import org.apache.wicket.feedback.IFeedbackMessageFilter;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.ValidationErrorFeedback;
 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.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Objects;
+import org.hamcrest.core.IsCollectionContaining;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -329,15 +335,9 @@ public class WicketTester extends BaseWicketTester
         * @param expectedErrorMessages
         *            expected error messages
         */
-       public void assertErrorMessages(String... expectedErrorMessages)
+       public void assertErrorMessages(Serializable... expectedErrorMessages)
        {
-               List<Serializable> actualMessages = 
getMessages(FeedbackMessage.ERROR);
-               List<Serializable> msgs = new ArrayList<Serializable>();
-               for (Serializable actualMessage : actualMessages)
-               {
-                       msgs.add(actualMessage.toString());
-               }
-               
WicketTesterHelper.assertEquals(Arrays.asList(expectedErrorMessages), msgs);
+               assertFeedbackMessages(new 
ExactLevelFeedbackMessageFilter(FeedbackMessage.ERROR), expectedErrorMessages);
        }
 
        /**
@@ -346,12 +346,77 @@ public class WicketTester extends BaseWicketTester
         * @param expectedInfoMessages
         *            expected info messages
         */
-       public void assertInfoMessages(String... expectedInfoMessages)
+       public void assertInfoMessages(Serializable... expectedInfoMessages)
+       {
+               assertFeedbackMessages(new 
ExactLevelFeedbackMessageFilter(FeedbackMessage.INFO), expectedInfoMessages);
+       }
+
+       /**
+        * Assert there are feedback messages accepted by the provided filter.
+        *
+        * @param filter
+        *            the filter that will decide which messages to check
+        * @param expectedMessages
+        *            expected feedback messages
+        */
+       public void assertFeedbackMessages(IFeedbackMessageFilter filter, 
Serializable... expectedMessages)
        {
-               List<Serializable> actualMessages = 
getMessages(FeedbackMessage.INFO);
-               
WicketTesterHelper.assertEquals(Arrays.asList(expectedInfoMessages), 
actualMessages);
+               List<FeedbackMessage> feedbackMessages = 
getFeedbackMessages(filter);
+               List<Serializable> actualMessages = 
getActualFeedbackMessages(feedbackMessages);
+               
WicketTesterHelper.assertEquals(Arrays.asList(expectedMessages), 
actualMessages);
        }
 
+       /**
+        * Asserts that there is a feedback message provided by a given 
component
+        *
+        * @param component
+        *          the component that provided the expected feedback message. 
Optional.
+        * @param key
+        *          the resource key for the feedback message. Mandatory.
+        * @param model
+        *          the model used for interpolating the feedback message. 
Optional.
+        * @param filter
+        *          the filter that decides in which messages to look in. E.g. 
with a specific
+        *          level, rendered or not, etc.
+        */
+       public void assertComponentFeedbackMessage(Component component, String 
key, IModel<?> model, IFeedbackMessageFilter filter)
+       {
+               Args.notNull(key, "key");
+
+               String expectedMessage = 
getApplication().getResourceSettings().getLocalizer().getString(key, component, 
model);
+
+               List<FeedbackMessage> feedbackMessages = 
getFeedbackMessages(filter);
+               List<Serializable> actualMessages = 
getActualFeedbackMessages(feedbackMessages);
+
+               assertThat(String.format("Feedback message with key '%s' cannot 
be found", key),
+                               actualMessages, 
IsCollectionContaining.hasItem(expectedMessage));
+       }
+
+       /**
+        * Extracts the actual messages from the passed feedback messages.
+        * Specially handles ValidationErrorFeedback messages by extracting 
their String message
+        *
+        * @param feedbackMessages
+        *            the feedback messages
+        * @return the FeedbackMessages' messages
+        */
+       private List<Serializable> 
getActualFeedbackMessages(List<FeedbackMessage> feedbackMessages)
+       {
+               List<Serializable> actualMessages = new ArrayList<>();
+               for (FeedbackMessage feedbackMessage : feedbackMessages)
+               {
+                       Serializable message = feedbackMessage.getMessage();
+                       if (message instanceof ValidationErrorFeedback)
+                       {
+                               actualMessages.add(message.toString());
+                       }
+                       else
+                       {
+                               actualMessages.add(message);
+                       }
+               }
+               return actualMessages;
+       }
 
        /**
         * Assert that a particular feedback panel is rendering certain 
messages.
@@ -365,27 +430,27 @@ public class WicketTester extends BaseWicketTester
         * @param messages
         *            messages expected to be rendered
         */
-       public void assertFeedback(String path, String... messages)
+       public void assertFeedback(String path, Serializable... 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");
+                       fail(String.format("feedback panel at path [%s] 
returned null messages", path));
                }
                if (messages.length != renderedMessages.size())
                {
-                       fail("you expected " + messages.length + " messages for 
the feedback panel [" + path +
-                               "], but there were actually " + 
renderedMessages.size());
+                       fail(String.format("you expected '%d' messages for the 
feedback panel [%s], but there were actually '%d'",
+                                       messages.length, path, 
renderedMessages.size()));
                }
                for (int i = 0; i < messages.length && i < 
renderedMessages.size(); i++)
                {
-                       final String expected = messages[i];
+                       final Serializable expected = messages[i];
                        boolean found = false;
                        for (FeedbackMessage actual : renderedMessages)
                        {
-                               if (Objects.equal(expected, 
actual.getMessage().toString()))
+                               if (Objects.equal(expected, 
actual.getMessage()))
                                {
                                        found = true;
                                        break;
@@ -457,10 +522,7 @@ public class WicketTester extends BaseWicketTester
         */
        public void assertNoErrorMessage()
        {
-               List<Serializable> messages = 
getMessages(FeedbackMessage.ERROR);
-               assertTrue(
-                       "expect no error message, but contains\n" + 
WicketTesterHelper.asLined(messages),
-                       messages.isEmpty());
+               assertNoFeedbackMessage(FeedbackMessage.ERROR);
        }
 
        /**
@@ -468,9 +530,16 @@ public class WicketTester extends BaseWicketTester
         */
        public void assertNoInfoMessage()
        {
-               List<Serializable> messages = getMessages(FeedbackMessage.INFO);
-               assertTrue("expect no info message, but contains\n" + 
WicketTesterHelper.asLined(messages),
-                       messages.isEmpty());
+               assertNoFeedbackMessage(FeedbackMessage.INFO);
+       }
+
+       /**
+        * Asserts there are no feedback messages with a certain level.
+        */
+       public void assertNoFeedbackMessage(int level)
+       {
+               Result result = hasNoFeedbackMessage(level);
+               assertFalse(result.getMessage(), result.wasFailed());
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
index 668d574..660ac7c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
@@ -70,7 +70,7 @@ public class WicketTesterHelper
         */
        public static List<WicketTesterHelper.ComponentData> 
getComponentData(final Page page)
        {
-               final List<ComponentData> data = new ArrayList<ComponentData>();
+               final List<ComponentData> data = new ArrayList<>();
 
                if (page != null)
                {
@@ -158,7 +158,7 @@ public class WicketTesterHelper
                        lined.append(objectString);
                        if (iter.hasNext())
                        {
-                               lined.append("\n");
+                               lined.append('\n');
                        }
                }
                return lined.toString();
@@ -194,7 +194,7 @@ public class WicketTesterHelper
        public static List<AjaxEventBehavior> findAjaxEventBehaviors(Component 
component, String event)
        {
                Args.notEmpty(event, "event");
-               List<AjaxEventBehavior> behaviors = new 
ArrayList<AjaxEventBehavior>();
+               List<AjaxEventBehavior> behaviors = new ArrayList<>();
                String[] eventNames = Strings.split(event, ' ');
                for (String eventName : eventNames)
                {
@@ -233,12 +233,9 @@ public class WicketTesterHelper
         */
        public static Behavior findBehavior(Component component, Class<? 
extends Behavior> behaviorClass)
        {
-               for (Behavior behavior : component.getBehaviors())
+               for (Behavior behavior : component.getBehaviors(behaviorClass))
                {
-                       if (behaviorClass.isAssignableFrom(behavior.getClass()))
-                       {
-                               return behavior;
-                       }
+                       return behavior;
                }
                return null;
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/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 3a10018..cc722c3 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
@@ -37,6 +37,8 @@ import org.apache.wicket.authorization.IAuthorizationStrategy;
 import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
 import org.apache.wicket.core.request.handler.IPageProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
+import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter;
+import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
@@ -70,6 +72,7 @@ import org.apache.wicket.util.tester.apps_1.SuccessPage;
 import org.apache.wicket.util.tester.apps_1.ViewBook;
 import org.apache.wicket.util.tester.apps_6.LinkPage;
 import org.apache.wicket.util.tester.apps_6.ResultPage;
+import 
org.apache.wicket.util.tester.apps_8.ComponentFeedbackResourceTestingPage;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -1216,4 +1219,26 @@ public class WicketTesterTest extends WicketTestCase
                tester.submitForm(page.form);
                assertEquals(null, page.text);
        }
+
+       /**
+        * https://issues.apache.org/jira/browse/WICKET-5128
+        */
+       @Test
+       public void renderComponentRelativeErrorMessage()
+       {
+               tester.startPage(new ComponentFeedbackResourceTestingPage());
+               Component label = 
tester.getComponentFromLastRenderedPage("label");
+               tester.assertComponentFeedbackMessage(label, "error.msg", null, 
new ExactLevelFeedbackMessageFilter(FeedbackMessage.ERROR));
+       }
+
+       /**
+        * https://issues.apache.org/jira/browse/WICKET-5128
+        */
+       @Test
+       public void renderComponentRelativeInfoMessage()
+       {
+               tester.startPage(new ComponentFeedbackResourceTestingPage());
+               Component label = 
tester.getComponentFromLastRenderedPage("label");
+               tester.assertComponentFeedbackMessage(label, "info.msg", null, 
new ExactLevelFeedbackMessageFilter(FeedbackMessage.INFO));
+       }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/ComponentFeedbackResourceTestingPage.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/ComponentFeedbackResourceTestingPage.html
 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/ComponentFeedbackResourceTestingPage.html
new file mode 100644
index 0000000..8cfda9f
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/ComponentFeedbackResourceTestingPage.html
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:wicket="http://wicket.apache.org";>
+<body>
+    <div wicket:id="label"/>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/ComponentFeedbackResourceTestingPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/ComponentFeedbackResourceTestingPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/ComponentFeedbackResourceTestingPage.java
new file mode 100644
index 0000000..fec8efc
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/ComponentFeedbackResourceTestingPage.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.util.tester.apps_8;
+
+import org.apache.wicket.markup.html.WebPage;
+
+/**
+ * A simple Page that contains a Label that renders some Feedback Messages
+ */
+public class ComponentFeedbackResourceTestingPage extends WebPage
+{
+       public ComponentFeedbackResourceTestingPage()
+       {
+               add(new TestResourceProvidingLabel("label"));
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/TestResourceProvidingLabel.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/TestResourceProvidingLabel.java
 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/TestResourceProvidingLabel.java
new file mode 100644
index 0000000..3858cb8
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/TestResourceProvidingLabel.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.util.tester.apps_8;
+
+import org.apache.wicket.markup.html.basic.Label;
+
+/**
+ * A simple Label that renders some Feedback Messages.
+ * @author Martin Dilger
+ */
+public class TestResourceProvidingLabel extends Label
+{
+       public TestResourceProvidingLabel(String id)
+       {
+               super(id,"A simple Test Label");
+       }
+
+       @Override
+       protected void onBeforeRender()
+       {
+               super.onBeforeRender();
+
+               //provide some default messages before the component is 
rendered.
+               error(this.getString("error.msg"));
+               info(this.getString("info.msg"));
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/0c412482/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/TestResourceProvidingLabel.properties
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/TestResourceProvidingLabel.properties
 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/TestResourceProvidingLabel.properties
new file mode 100644
index 0000000..9da0adc
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_8/TestResourceProvidingLabel.properties
@@ -0,0 +1,3 @@
+#some feedback messages that can be tested for
+error.msg=sorry, that is an error
+info.msg=good, that is just for info
\ No newline at end of file

Reply via email to