Author: jdonnerstag
Date: Tue Jul  6 20:08:31 2010
New Revision: 961003

URL: http://svn.apache.org/viewvc?rev=961003&view=rev
Log:
fixed WICKET-2934 FormTester creates parameters in mock request even for 
disabled form components
fixed WICKET-2935 FormComponent#inputChanged does not properly check 
enabled/disabled status of the component
Issue: WICKET-2934

Added:
    
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest$TestPage.html
    
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest.java
Modified:
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
    
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java?rev=961003&r1=961002&r2=961003&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
 Tue Jul  6 20:08:31 2010
@@ -921,7 +921,7 @@ public abstract class FormComponent<T> e
         */
        public final void inputChanged()
        {
-               if (isVisibleInHierarchy() && isEnabled())
+               if (isVisibleInHierarchy() && isEnabledInHierarchy())
                {
                        // Get input as String array
                        final String[] input = getInputAsArray();

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java?rev=961003&r1=961002&r2=961003&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
 Tue Jul  6 20:08:31 2010
@@ -382,8 +382,9 @@ public class FormTester
                        @Override
                        public void onFormComponent(final FormComponent<?> 
formComponent)
                        {
-                               // do nothing for invisible component
-                               if (!formComponent.isVisibleInHierarchy())
+                               // do nothing for invisible or disabled 
component -- the browser would not send any parameter
+                               // for a disabled component
+                               if (!(formComponent.isVisibleInHierarchy() && 
formComponent.isEnabledInHierarchy()))
                                {
                                        return;
                                }

Added: 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest$TestPage.html
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest%24TestPage.html?rev=961003&view=auto
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest$TestPage.html
 (added)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest$TestPage.html
 Tue Jul  6 20:08:31 2010
@@ -0,0 +1,9 @@
+<html>
+<body>
+<div wicket:id="container">
+<form wicket:id="form">
+<input type="checkbox" wicket:id="check"/>
+</form>
+</div>
+</body>
+</html>
\ No newline at end of file

Added: 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest.java?rev=961003&view=auto
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest.java
 (added)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormParentDisabledRawInputTest.java
 Tue Jul  6 20:08:31 2010
@@ -0,0 +1,79 @@
+/*
+ * 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.markup.html.form;
+
+import junit.framework.TestCase;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.util.tester.WicketTester;
+
+public class FormParentDisabledRawInputTest extends TestCase
+{
+       private WicketTester tester;
+
+       @Override
+       protected void setUp() throws Exception
+       {
+               super.setUp();
+               tester = new WicketTester();
+       }
+
+       public static class TestPage extends WebPage
+       {
+               public boolean property = true;
+               public boolean enabled = true;
+
+               public TestPage()
+               {
+                       WebMarkupContainer container = new 
WebMarkupContainer("container")
+                       {
+                               @Override
+                               public boolean isEnabled()
+                               {
+                                       return enabled;
+                               };
+                       };
+                       Form<?> form = new Form<Void>("form");
+                       container.add(form);
+                       form.add(new CheckBox("check", new 
PropertyModel<Boolean>(this, "property")));
+                       add(container);
+               }
+       }
+
+       public void testDisabledParent() throws Exception
+       {
+               TestPage page = new TestPage();
+               page.enabled = false;
+               tester.startPage(page);
+               tester.assertContains("checked=\"checked\"");
+               tester.assertContains("disabled=\"disabled\"");
+               Component check = 
tester.getComponentFromLastRenderedPage("container:form:check");
+               assertTrue(check.isEnabled());
+               assertFalse(check.isEnabledInHierarchy());
+
+               // nothing should change with a submit that changes no values
+               tester.newFormTester("container:form").submit();
+               check = 
tester.getComponentFromLastRenderedPage("container:form:check");
+               assertTrue(check.isEnabled());
+               assertFalse(check.isEnabledInHierarchy());
+               tester.assertContains("disabled=\"disabled\"");
+               tester.assertContains("checked=\"checked\"");
+       }
+}

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java?rev=961003&r1=961002&r2=961003&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java
 Tue Jul  6 20:08:31 2010
@@ -18,6 +18,7 @@ package org.apache.wicket.util.tester;
 
 import java.util.Locale;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.Session;
 import org.apache.wicket.WicketTestCase;
@@ -199,4 +200,31 @@ public class FormTesterTest extends Wick
                assertEquals("Mock Value", domainObject.getText());
        }
 
+       /**
+        * @throws Exception
+        */
+       public void testNoParametersCreatedForDisabledComponents() throws 
Exception
+       {
+               tester.startPage(new MockFormPage()
+               {
+                       @Override
+                       protected void onBeforeRender()
+                       {
+                               super.onBeforeRender();
+                               // on first rendering there can't be any form 
parameters.
+                               // on second rendering there must not be any 
since we disable the form.
+                               // the components all get rendered as disabled, 
so the browser would not send
+                               // any parameters. thus FormTester must not 
send any either.
+                               
assertTrue(getRequest().getRequestParameters().getParameters().isEmpty());
+                       }
+               });
+               final Component form = 
tester.getComponentFromLastRenderedPage("form");
+               form.setEnabled(false);
+               assertFalse(form.isEnabled());
+               Component check = 
tester.getComponentFromLastRenderedPage("form:checkbox");
+               assertTrue(check.isEnabled());
+               assertFalse(check.isEnabledInHierarchy());
+               FormTester formTester = tester.newFormTester("form");
+               formTester.submit();
+       }
 }


Reply via email to