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();
+ }
}