Repository: wicket Updated Branches: refs/heads/master ec1b7129e -> 5c9e27c6e
WICKET-6316 encoding bookmarkable URLs for stateless pages 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/5c9e27c6 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/5c9e27c6 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/5c9e27c6 Branch: refs/heads/master Commit: 5c9e27c6ec262d9ec4a0878bc74c594f12303558 Parents: ec1b712 Author: Pedro Henrique Oliveira dos Santos <[email protected]> Authored: Sat Feb 4 03:57:47 2017 -0200 Committer: Pedro Henrique Oliveira dos Santos <[email protected]> Committed: Sat Feb 4 03:57:47 2017 -0200 ---------------------------------------------------------------------- .../wicket/util/tester/BaseWicketTester.java | 16 +++++- .../handler/ListenerRequestHandlerTest.java | 58 +++++++++++++++----- 2 files changed, 58 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/5c9e27c6/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 0b30c92..d7cdf4e 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 @@ -60,6 +60,7 @@ import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.ajax.markup.html.IAjaxLink; import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; import org.apache.wicket.behavior.AbstractAjaxBehavior; +import org.apache.wicket.core.request.handler.BookmarkableListenerRequestHandler; import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler; import org.apache.wicket.core.request.handler.IPageProvider; import org.apache.wicket.core.request.handler.ListenerRequestHandler; @@ -1093,8 +1094,19 @@ public class BaseWicketTester // there are two ways to do this. RequestCycle could be forced to call the handler // directly but constructing and parsing the URL increases the chance of triggering bugs - IRequestHandler handler = new ListenerRequestHandler(new PageAndComponentProvider( - component.getPage(), component)); + Page page = component.getPage(); + PageAndComponentProvider pageAndComponentProvider = new PageAndComponentProvider(page, + component); + + IRequestHandler handler = null; + if (page.isPageStateless() || (page.isBookmarkable() && page.wasCreatedBookmarkable())) + { + handler = new BookmarkableListenerRequestHandler(pageAndComponentProvider); + } + else + { + handler = new ListenerRequestHandler(pageAndComponentProvider); + } Url url = urlFor(handler); request.setUrl(url); http://git-wip-us.apache.org/repos/asf/wicket/blob/5c9e27c6/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerRequestHandlerTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerRequestHandlerTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerRequestHandlerTest.java index b212c9c..b8bd401 100644 --- a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerRequestHandlerTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerRequestHandlerTest.java @@ -160,20 +160,37 @@ public class ListenerRequestHandlerTest extends WicketTestCase } @Test - public void skipListenerIfExpiredPage() + public void executeStatelessLinkInAFreshPage() { - tester.getApplication().getRootRequestMapperAsCompound() .add(new MountedMapper("/segment", NotExpiredPage.class)); - tester.startPage(NotExpiredPage.class); + tester.startPage(StatelessPage.class); + tester.clickLink("statelessLink"); - NotExpiredPage page = (NotExpiredPage)tester.getLastRenderedPage(); + + StatelessPage page = (StatelessPage)tester.getLastRenderedPage(); assertThat(page.invoked, is(true)); + assertThat(page.executedInAnFreshPage, is(true)); } - public static class NotExpiredPage extends WebPage + @Test + public void executeStatelessLinkInAFreshPageAtASegment() + { + tester.getApplication().getRootRequestMapperAsCompound() .add(new MountedMapper("/segment", TemporarilyStateful.class)); + tester.startPage(TemporarilyStateful.class); + + tester.clickLink("statelessLink"); + + TemporarilyStateful page = (TemporarilyStateful)tester.getLastRenderedPage(); + assertThat(page.invoked, is(true)); + assertThat(page.executedInAnFreshPage, is(true)); + } + + public static class StatelessPage extends WebPage { public boolean invoked; + public boolean executedInAnFreshPage; + private boolean initialState = true; - public NotExpiredPage(PageParameters pageParameters) + public StatelessPage(PageParameters pageParameters) { super(pageParameters); add(new StatelessLink<Object>("statelessLink") @@ -181,12 +198,7 @@ public class ListenerRequestHandlerTest extends WicketTestCase public void onClick() { invoked = true; - } - }); - add(new Link<Object>("statefullLink") - { - public void onClick() - { + executedInAnFreshPage = initialState; } }); } @@ -195,14 +207,32 @@ public class ListenerRequestHandlerTest extends WicketTestCase public IMarkupFragment getMarkup() { return Markup.of( - "<html><body><a wicket:id=\"statelessLink\"></a><a wicket:id=\"statefullLink\"></a></body></html>"); + "<html><body><a wicket:id=\"statelessLink\"></a></body></html>"); } @Override protected void onBeforeRender() { - get("statefullLink").setVisible(false); + initialState = false; super.onBeforeRender(); } } + public static class TemporarilyStateful extends StatelessPage + { + + public TemporarilyStateful(PageParameters pageParameters) + { + super(pageParameters); + setStatelessHint(false); + } + + + @Override + protected void onBeforeRender() + { + setStatelessHint(true); + super.onBeforeRender(); + } + } + }
