Author: jdonnerstag
Date: Sun Jan 11 02:51:32 2009
New Revision: 733445

URL: http://svn.apache.org/viewvc?rev=733445&view=rev
Log:
fixed wicket-2016: FormTester 
(BaseWicketTester.executeAjaxEvent[component,event]) submits also buttons that 
are hidden (isVisible=false) resulting in exception

Added:
    wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.html
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.java
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/TestHomePage.java
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/WicketApplication.java
Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=733445&r1=733444&r2=733445&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
 Sun Jan 11 02:51:32 2009
@@ -1261,20 +1261,23 @@
                        @Override
                        public void onFormComponent(FormComponent<?> 
formComponent)
                        {
-                               // !(formComponent instanceof Button) &&
-                               if (!(formComponent instanceof RadioGroup) &&
-                                       !(formComponent instanceof CheckGroup))
+                               if (formComponent.isVisible())
                                {
-                                       String name = 
formComponent.getInputName();
-                                       String value = formComponent.getValue();
-
-                                       // Set request parameter with the field 
value, but do not
-                                       // modify an existing
-                                       // request parameter explicitly set 
using
-                                       // FormTester.setValue()
-                                       if 
(getServletRequest().getParameterMap().get(name) == null)
+                                       // !(formComponent instanceof Button) &&
+                                       if (!(formComponent instanceof 
RadioGroup) &&
+                                               !(formComponent instanceof 
CheckGroup))
                                        {
-                                               
getServletRequest().setParameter(name, value);
+                                               String name = 
formComponent.getInputName();
+                                               String value = 
formComponent.getValue();
+
+                                               // Set request parameter with 
the field value, but do not
+                                               // modify an existing
+                                               // request parameter explicitly 
set using
+                                               // FormTester.setValue()
+                                               if 
(getServletRequest().getParameterMap().get(name) == null)
+                                               {
+                                                       
getServletRequest().setParameter(name, value);
+                                               }
                                        }
                                }
                        }

Added: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.html?rev=733445&view=auto
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.html
 (added)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.html
 Sun Jan 11 02:51:32 2009
@@ -0,0 +1,17 @@
+<html>
+    <head>
+        <title>Wicket Quickstart Archetype Homepage</title>
+    </head>
+    <body>
+        <strong>Wicket Quickstart Archetype Homepage</strong>
+        <br/><br/>
+        <span wicket:id="message">message will be here</span>
+        
+        <form wicket:id="form">
+        Input field: <input type="text" wicket:id="inputField" />
+        <input type="submit" wicket:id="hiddenButton" value="Submit"/>
+        <input type="submit" wicket:id="ajaxButton" value="Submit"/>
+        </form>
+    </body>
+</html>
+

Added: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.java?rev=733445&view=auto
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.java
 (added)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/HomePage.java
 Sun Jan 11 02:51:32 2009
@@ -0,0 +1,65 @@
+/*
+ * 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.util.tester.apps_7;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.Model;
+
+/**
+ * Homepage
+ */
+public class HomePage extends WebPage
+{
+       private static final long serialVersionUID = 1L;
+
+       /**
+        */
+       public HomePage()
+       {
+               this(true, 0);
+       }
+
+       /**
+        * @param enableInputField
+        * @param newPageId
+        */
+       public HomePage(boolean enableInputField, int newPageId)
+       {
+               // Add the simplest type of label
+               add(new Label("message",
+                       "If you see this message wicket is properly configured 
and running"));
+
+               Form<?> form;
+               add(form = new Form<Void>("form"));
+               form.add(new TextField<String>("inputField", new 
Model<String>()));
+               form.add(new Button("hiddenButton").setVisible(false));
+               form.add(new AjaxButton("ajaxButton")
+               {
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form)
+                       {
+
+                       }
+               });
+       }
+}

Added: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/TestHomePage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/TestHomePage.java?rev=733445&view=auto
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/TestHomePage.java
 (added)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/TestHomePage.java
 Sun Jan 11 02:51:32 2009
@@ -0,0 +1,52 @@
+/*
+ * 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.util.tester.apps_7;
+
+import junit.framework.TestCase;
+
+import org.apache.wicket.util.tester.WicketTester;
+
+/**
+ * Simple test using the WicketTester
+ */
+public class TestHomePage extends TestCase
+{
+       private WicketTester tester;
+
+       @Override
+       public void setUp()
+       {
+               tester = new WicketTester(new WicketApplication());
+       }
+
+       /**
+        * 
+        */
+       public void testAjaxSubmitWhileAnotherButtonIsNotVisible()
+       {
+               // start and render the test page
+               tester.startPage(HomePage.class);
+               // assert rendered page class
+               tester.assertRenderedPage(HomePage.class);
+               // assert rendered label component
+               tester.assertLabel("message",
+                       "If you see this message wicket is properly configured 
and running");
+
+               // execute ajax
+               tester.executeAjaxEvent("form:ajaxButton", "onclick");
+       }
+}

Added: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/WicketApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/WicketApplication.java?rev=733445&view=auto
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/WicketApplication.java
 (added)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/apps_7/WicketApplication.java
 Sun Jan 11 02:51:32 2009
@@ -0,0 +1,50 @@
+/*
+ * 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.util.tester.apps_7;
+
+import org.apache.wicket.protocol.http.WebApplication;
+
+/**
+ * Application object for your web application. If you want to run this 
application without
+ * deploying, run the Start class.
+ * 
+ * @see com.mycompany.Start#main(String[])
+ */
+public class WicketApplication extends WebApplication
+{
+       /**
+        * Constructor
+        */
+       public WicketApplication()
+       {
+       }
+
+       /**
+        * @see org.apache.wicket.Application#getHomePage()
+        */
+       @Override
+       public Class<HomePage> getHomePage()
+       {
+               return HomePage.class;
+       }
+
+       @Override
+       protected void init()
+       {
+               getSessionSettings().setPageIdUniquePerSession(true);
+       }
+}


Reply via email to