You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by gs...@apache.org on 2007/12/16 02:18:43 UTC

svn commit: r604536 - in /wicket/trunk/jdk-1.4/wicket/src: main/java/org/apache/wicket/Component.java main/java/org/apache/wicket/util/tester/BaseWicketTester.java test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java

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