Author: gseitz
Date: Sat Dec 15 17:18:42 2007
New Revision: 604536

URL: http://svn.apache.org/viewvc?rev=604536&view=rev
Log:
WICKET-545: enhanced check in isComponentOnAjaxResponse

Added:
    
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java
   (with props)
Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java?rev=604536&r1=604535&r2=604536&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java 
(original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java 
Sat Dec 15 17:18:42 2007
@@ -1582,6 +1582,16 @@
        }
 
        /**
+        * Gets whether or not an invisible component will render a placeholder 
tag.
+        * 
+        * @return true if a placeholder tag should be rendered
+        */
+       public final boolean getOutputMarkupPlaceholderTag()
+       {
+               return getFlag(FLAG_PLACEHOLDER);
+       }
+
+       /**
         * Gets the page holding this component.
         * 
         * @return The page holding this component

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=604536&r1=604535&r2=604536&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
 Sat Dec 15 17:18:42 2007
@@ -985,6 +985,21 @@
                String failMessage = "A component which is null could not have 
been added to the AJAX response";
                notNull(failMessage, component);
 
+               Result result;
+
+               // test that the component renders the placeholder tag if it's 
not visible
+               if (!component.isVisible())
+               {
+                       failMessage = "A component which is invisible and 
doesn't render a placeholder tag"
+                               + " will not be rendered at all and thus won't 
be accessible for subsequent AJAX interaction";
+                       result = isTrue(failMessage, 
component.getOutputMarkupPlaceholderTag());
+                       if (result.wasFailed())
+                       {
+                               return result;
+                       }
+               }
+
+
                // Get the AJAX response
                String ajaxResponse = getServletResponse().getDocument();
 
@@ -992,7 +1007,7 @@
                failMessage = "The Previous response was not an AJAX response. "
                        + "You need to execute an AJAX event, using clickLink, 
before using this assert";
                boolean isAjaxResponse = ajaxResponse.startsWith("<?xml 
version=\"1.0\" encoding=\"UTF-8\"?><ajax-response>");
-               Result result = isTrue(failMessage, isAjaxResponse);
+               result = isTrue(failMessage, isAjaxResponse);
                if (result.wasFailed())
                {
                        return result;

Added: 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java?rev=604536&view=auto
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java
 (added)
+++ 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java
 Sat Dec 15 17:18:42 2007
@@ -0,0 +1,58 @@
+/*
+ * 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.ajax;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.WicketTestCase;
+
+/**
+ * @author Gerolf Seitz
+ */
+public class AjaxComponentVisibilityTest extends WicketTestCase
+{
+
+       private Component test1;
+       private Component test2;
+       private Component test3;
+
+       protected void setUp() throws Exception
+       {
+               super.setUp();
+               tester.startPage(new AjaxHeaderContributionPage());
+               test1 = tester.getLastRenderedPage().get("test1");
+               test2 = tester.getLastRenderedPage().get("test2");
+               test3 = tester.getLastRenderedPage().get("test3");
+       }
+
+       /**
+        * 
+        */
+       public void testComponentsAddedToAjax()
+       {
+               test2.setVisible(false);
+               test3.setVisible(false).setOutputMarkupPlaceholderTag(true);
+
+               tester.clickLink("link");
+
+               // test1 should be added without any problems
+               
assertFalse(tester.isComponentOnAjaxResponse(test1).wasFailed());
+               // test2 is not in the ajax response because it's invisible
+               assertTrue(tester.isComponentOnAjaxResponse(test2).wasFailed());
+               // test3 is in the ajax response because it renders a 
placeholder tag
+               
assertFalse(tester.isComponentOnAjaxResponse(test3).wasFailed());
+       }
+}

Propchange: 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to