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();
+               }
+       }
+
 }

Reply via email to