Repository: wicket Updated Branches: refs/heads/master eefe3c30a -> 13137b9da
WICKET-5694 Add WicketTester assertion methods for component's markup style, variation and locale (cherry picked from commit b09593a6e1f60b080e2f27d739336757ec01d686) Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/13137b9d Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/13137b9d Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/13137b9d Branch: refs/heads/master Commit: 13137b9da97f980bfd0f84dd716b22e344de86c8 Parents: eefe3c3 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Tue Sep 9 10:38:12 2014 +0300 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Tue Sep 9 10:43:07 2014 +0300 ---------------------------------------------------------------------- .../java/org/apache/wicket/markup/Markup.java | 2 - .../org/apache/wicket/util/tester/Result.java | 11 +-- .../apache/wicket/util/tester/WicketTester.java | 93 ++++++++++++++++++++ .../wicket/markup/MarkupVariationTest.java | 11 +++ 4 files changed, 110 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/13137b9d/wicket-core/src/main/java/org/apache/wicket/markup/Markup.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/Markup.java b/wicket-core/src/main/java/org/apache/wicket/markup/Markup.java index 2808e42..ce815f1 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/Markup.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/Markup.java @@ -25,8 +25,6 @@ import java.util.List; import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.resource.ResourceStreamNotFoundException; import org.apache.wicket.util.string.AppendingStringBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** http://git-wip-us.apache.org/repos/asf/wicket/blob/13137b9d/wicket-core/src/main/java/org/apache/wicket/util/tester/Result.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/util/tester/Result.java b/wicket-core/src/main/java/org/apache/wicket/util/tester/Result.java index dfe0cd9..3a51949 100644 --- a/wicket-core/src/main/java/org/apache/wicket/util/tester/Result.java +++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/Result.java @@ -24,16 +24,17 @@ package org.apache.wicket.util.tester; */ public class Result { - private static final Result PASS = new Result(false); + public static final Result PASS = new Result(false); + private final boolean failed; private final String message; - private Result(boolean failed) + public Result(boolean failed) { this(failed, ""); } - private Result(boolean failed, String message) + public Result(boolean failed, String message) { this.failed = failed; this.message = message; @@ -46,7 +47,7 @@ public class Result * an error message * @return a <code>Result</code> which failed */ - static Result fail(String message) + public static Result fail(String message) { return new Result(true, message); } @@ -56,7 +57,7 @@ public class Result * * @return a <code>Result</code> which passed */ - static Result pass() + public static Result pass() { return PASS; } http://git-wip-us.apache.org/repos/asf/wicket/blob/13137b9d/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 46b9f4a..e860574 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 @@ -26,10 +26,12 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import javax.servlet.ServletContext; import junit.framework.AssertionFailedError; + import org.apache.wicket.Component; import org.apache.wicket.MarkupContainer; import org.apache.wicket.Page; @@ -38,6 +40,7 @@ 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.IMarkupFragment; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.ValidationErrorFeedback; @@ -324,6 +327,96 @@ public class WicketTester extends BaseWicketTester } /** + * Asserts that a component's markup has loaded with the given variation + * + * @param component + * The component which markup to check + * @param expectedVariation + * The expected variation of the component's markup + */ + public void assertMarkupVariation(Component component, String expectedVariation) + { + Result result = Result.PASS; + IMarkupFragment markup = getMarkupFragment(component); + + String actualVariation = markup.getMarkupResourceStream().getVariation(); + if (Objects.equal(expectedVariation, actualVariation) == false) + { + result = Result.fail(String.format("Wrong variation for component '%s'. Actual: '%s', expected: '%s'", + component.getPageRelativePath(), actualVariation, expectedVariation)); + } + + assertResult(result); + } + + /** + * Asserts that a component's markup has loaded with the given style + * + * @param component + * The component which markup to check + * @param expectedStyle + * The expected style of the component's markup + */ + public void assertMarkupStyle(Component component, String expectedStyle) + { + Result result = Result.PASS; + IMarkupFragment markup = getMarkupFragment(component); + + String actualStyle = markup.getMarkupResourceStream().getStyle(); + if (Objects.equal(expectedStyle, actualStyle) == false) + { + result = Result.fail(String.format("Wrong style for component '%s'. Actual: '%s', expected: '%s'", + component.getPageRelativePath(), actualStyle, expectedStyle)); + } + + assertResult(result); + } + + /** + * Asserts that a component's markup has loaded with the given locale + * + * @param component + * The component which markup to check + * @param expectedLocale + * The expected locale of the component's markup + */ + public void assertMarkupLocale(Component component, Locale expectedLocale) + { + Result result = Result.PASS; + IMarkupFragment markup = getMarkupFragment(component); + + Locale actualLocale = markup.getMarkupResourceStream().getLocale(); + if (Objects.equal(expectedLocale, actualLocale) == false) + { + result = Result.fail(String.format("Wrong locale for component '%s'. Actual: '%s', expected: '%s'", + component.getPageRelativePath(), actualLocale, expectedLocale)); + } + + assertResult(result); + } + + private IMarkupFragment getMarkupFragment(Component component) + { + IMarkupFragment markup = null; + if (component instanceof MarkupContainer) + { + markup = ((MarkupContainer) component).getAssociatedMarkup(); + } + + if (markup == null) + { + markup = component.getMarkup(); + } + + if (markup == null) + { + throw new AssertionFailedError(String.format("Cannot find the markup of component: %s", component.getPageRelativePath())); + } + + return markup; + } + + /** * Asserts error-level feedback messages. * * @param expectedErrorMessages http://git-wip-us.apache.org/repos/asf/wicket/blob/13137b9d/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java index 5dd6883..195ff8f 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java @@ -42,15 +42,26 @@ public class MarkupVariationTest extends WicketTestCase { tester.startPage(new VariationPage()); tester.assertContainsNot("Two"); + tester.assertMarkupVariation(getVariationPanel(), "one"); + tester.assertMarkupVariation(tester.getLastRenderedPage(), null); tester.clickLink("p:l"); tester.assertContainsNot("One"); + tester.assertMarkupVariation(getVariationPanel(), "two"); + tester.assertMarkupVariation(tester.getLastRenderedPage(), null); tester.clickLink("p:l"); tester.assertContainsNot("Two"); + tester.assertMarkupVariation(getVariationPanel(), "one"); + tester.assertMarkupVariation(tester.getLastRenderedPage(), null); tester.clickLink("p:l"); } + private MarkupContainer getVariationPanel() + { + return (MarkupContainer) tester.getComponentFromLastRenderedPage("p"); + } + private static class VariationPage extends WebPage implements IMarkupResourceStreamProvider { private VariationPage()
