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 2013/06/25 14:16:09 UTC
[4/4] git commit: 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
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 <mg...@apache.org>
Authored: Tue Jun 25 15:15:30 2013 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
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