Author: frankbille
Date: Tue Nov  7 15:35:14 2006
New Revision: 472330

URL: http://svn.apache.org/viewvc?view=rev&rev=472330
Log:
WICKET-38 - A proposol of a fix to this issue.

Added:
    
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.html
   (with props)
    
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.java
   (with props)
Modified:
    
incubator/wicket/trunk/wicket/src/main/java/wicket/util/tester/WicketTester.java
    
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/WicketTesterTest.java

Modified: 
incubator/wicket/trunk/wicket/src/main/java/wicket/util/tester/WicketTester.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/util/tester/WicketTester.java?view=diff&rev=472330&r1=472329&r2=472330
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/main/java/wicket/util/tester/WicketTester.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/main/java/wicket/util/tester/WicketTester.java
 Tue Nov  7 15:35:14 2006
@@ -37,6 +37,7 @@
 import wicket.Page;
 import wicket.PageParameters;
 import wicket.RequestCycle;
+import wicket.Resource;
 import wicket.WicketRuntimeException;
 import wicket.ajax.AjaxEventBehavior;
 import wicket.ajax.AjaxRequestTarget;
@@ -58,6 +59,7 @@
 import wicket.markup.html.link.IPageLink;
 import wicket.markup.html.link.Link;
 import wicket.markup.html.link.PageLink;
+import wicket.markup.html.link.ResourceLink;
 import wicket.markup.html.list.ListView;
 import wicket.markup.html.panel.Panel;
 import wicket.protocol.http.MockWebApplication;
@@ -766,6 +768,34 @@
                        // process the request target
                        requestCycle.getRequestTarget().respond(requestCycle);
                }
+               // ResourceLink
+               else if (linkComponent instanceof ResourceLink)
+               {
+                       // Let's see if we should invoke the onclick or not
+                       Resource resource = null;
+                       
+                       try 
+                       {
+                               Field resourceField = 
ResourceLink.class.getDeclaredField("resource");
+                               resourceField.setAccessible(true);
+                               resource = 
(Resource)resourceField.get(linkComponent);
+                       }
+                       catch(Exception e)
+                       {
+                               Assert.fail(e.getMessage());
+                       }
+                       
+                       // If the link holds the resource itself we should
+                       if (resource != null)
+                       {
+                               newRequestToComponent(linkComponent);
+                       }
+                       // Else we should not (Should we do anything else?)
+                       else
+                       {
+                               // Do nothing
+                       }
+               }
                // if the link is a normal link
                else if (linkComponent instanceof Link)
                {
@@ -794,7 +824,7 @@
                                }
 
                        }
-
+                       
                        newRequestToComponent(link);
                }
                else

Added: 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.html
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.html?view=auto&rev=472330
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.html
 (added)
+++ 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.html
 Tue Nov  7 15:35:14 2006
@@ -0,0 +1 @@
+<a wicket:id="link">Link</a>
\ No newline at end of file

Propchange: 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.java?view=auto&rev=472330
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.java
 (added)
+++ 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.java
 Tue Nov  7 15:35:14 2006
@@ -0,0 +1,41 @@
+/*
+ * $Id: org.eclipse.jdt.ui.prefs 5004 2006-03-17 20:47:08 -0800 (Fri, 17 Mar 
2006) eelco12 $
+ * $Revision: 5004 $
+ * $Date: 2006-03-17 20:47:08 -0800 (Fri, 17 Mar 2006) $
+ * 
+ * 
==============================================================================
+ * Licensed 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 wicket.util.tester;
+
+import wicket.ResourceReference;
+import wicket.markup.html.WebPage;
+import wicket.markup.html.link.ResourceLink;
+
+/**
+ * Mock page for testing WicketTesters ability to test ResourceLinks
+ * 
+ * @author frankbille
+ */
+public class MockResourceLinkPage extends WebPage
+{
+       private static final long serialVersionUID = 1L;
+
+       /**
+        * Construct.
+        */
+       public MockResourceLinkPage()
+       {
+               new ResourceLink(this, "link", new 
ResourceReference(MockResourceLinkPage.class, "MockResourceLinkPage.html"));
+       }
+}

Propchange: 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/MockResourceLinkPage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/WicketTesterTest.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/WicketTesterTest.java?view=diff&rev=472330&r1=472329&r2=472330
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/WicketTesterTest.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/test/java/wicket/util/tester/WicketTesterTest.java
 Tue Nov  7 15:35:14 2006
@@ -39,7 +39,6 @@
 import wicket.util.tester.apps_1.ViewBook;
 
 
-
 /**
  * 
  * @author Juergen Donnerstag
@@ -47,7 +46,7 @@
 public class WicketTesterTest extends TestCase
 {
        private boolean eventExecuted;
-               
+
        @Override
        protected void setUp() throws Exception
        {
@@ -171,7 +170,7 @@
                tester.clickLink("link");
                tester.assertRenderedPage(CreateBook.class);
        }
-       
+
        /**
         * 
         */
@@ -179,7 +178,7 @@
        {
                // Start the tester
                WicketTester tester = new WicketTester();
-               
+
                final Page page = new MockPageWithLink();
                AjaxLink ajaxLink = new AjaxLink(page, MockPageWithLink.LINK_ID)
                {
@@ -189,7 +188,8 @@
                        public void onClick(AjaxRequestTarget target)
                        {
                                // Replace the link with a normal Link
-                               Link link = new Link(page, 
MockPageWithLink.LINK_ID) {
+                               Link link = new Link(page, 
MockPageWithLink.LINK_ID)
+                               {
                                        private static final long 
serialVersionUID = 1L;
 
                                        @Override
@@ -199,13 +199,14 @@
                                        }
                                };
                                link.setOutputMarkupId(true);
-                               
+
                                target.addComponent(link);
                        }
                };
                ajaxLink.setOutputMarkupId(true);
-               
-               tester.startPage(new ITestPageSource() {
+
+               tester.startPage(new ITestPageSource()
+               {
                        private static final long serialVersionUID = 1L;
 
                        public Page getTestPage()
@@ -213,17 +214,17 @@
                                return page;
                        }
                });
-               
-               
+
+
                // Click the link
                tester.clickLink(MockPageWithLink.LINK_ID);
 
                // The link must be a Link :)
                tester.assertComponent(MockPageWithLink.LINK_ID, Link.class);
-               
+
                // Get the new link component
                Component component = 
tester.getComponentFromLastRenderedPage(MockPageWithLink.LINK_ID);
-               
+
                // This must not fail
                tester.assertComponentOnAjaxResponse(component);
        }
@@ -267,7 +268,7 @@
 
                assertTrue(eventExecuted);
        }
-       
+
        /**
         * 
         */
@@ -286,5 +287,18 @@
                // label should now have "1" in it because that's what comes
                // from the page parameter.
                tester.assertLabel("label", "1");
+       }
+
+       /**
+        * Test that clickLink on a ResourceLink with a ResourceReference on it
+        * works.
+        */
+       public void testClickResourceLink()
+       {
+               WicketTester tester = new WicketTester();
+               
+               tester.startPage(MockResourceLinkPage.class);
+               
+               tester.clickLink("link");
        }
 }


Reply via email to