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