Updated Branches:
  refs/heads/master f4d1e2e36 -> ea83e6b62

WICKET-4801 BaseWicketTester.executeAjaxEvent only fires one of multiple 
behaviors bound to a given event


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/ea83e6b6
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/ea83e6b6
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/ea83e6b6

Branch: refs/heads/master
Commit: ea83e6b627b038433b51eb85d3abd4a13e89fe97
Parents: f4d1e2e
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Wed Oct 3 22:59:58 2012 +0300
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Wed Oct 3 22:59:58 2012 +0300

----------------------------------------------------------------------
 .../wicket/util/tester/BaseWicketTester.java       |   21 ++++++++---
 .../wicket/util/tester/WicketTesterHelper.java     |   29 +++++++++++++--
 2 files changed, 42 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/ea83e6b6/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
index abfad9d..82b3426 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
@@ -1802,14 +1802,22 @@ public class BaseWicketTester
                                        "not be invoked when AJAX (javascript) 
is disabled.");
                        }
 
-                       
executeBehavior(WicketTesterHelper.findAjaxEventBehavior(linkComponent, 
"onclick"));
+                       List<AjaxEventBehavior> behaviors = 
WicketTesterHelper.findAjaxEventBehaviors(linkComponent, "onclick");
+                       for (AjaxEventBehavior behavior : behaviors)
+                       {
+                               executeBehavior(behavior);
+                       }
                }
                // AjaxFallbackLinks is processed like an AjaxLink if isAjax is 
true
                // If it's not handling of the linkComponent is passed through 
to the
                // Link.
                else if (linkComponent instanceof AjaxFallbackLink && isAjax)
                {
-                       
executeBehavior(WicketTesterHelper.findAjaxEventBehavior(linkComponent, 
"onclick"));
+                       List<AjaxEventBehavior> behaviors = 
WicketTesterHelper.findAjaxEventBehaviors(linkComponent, "onclick");
+                       for (AjaxEventBehavior behavior : behaviors)
+                       {
+                               executeBehavior(behavior);
+                       }
                }
                // if the link is an AjaxSubmitLink, we need to find the form
                // from it using reflection so we know what to submit.
@@ -2253,9 +2261,12 @@ public class BaseWicketTester
 
                checkUsability(component, true);
 
-               AjaxEventBehavior ajaxEventBehavior = 
WicketTesterHelper.findAjaxEventBehavior(component,
-                       event);
-               executeBehavior(ajaxEventBehavior);
+               List<AjaxEventBehavior> ajaxEventBehaviors = 
WicketTesterHelper.findAjaxEventBehaviors(component,
+                               event);
+               for (AjaxEventBehavior ajaxEventBehavior : ajaxEventBehaviors)
+               {
+                       executeBehavior(ajaxEventBehavior);
+               }
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/ea83e6b6/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
index a2ab102..ac8d0f5 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java
@@ -165,13 +165,36 @@ public class WicketTesterHelper
        }
 
        /**
+        * Finds the first AjaxEventBehavior attached to the specified 
component with the
+        * specified event.
+        *
         * @param component
         * @param event
-        * @return AjaxEventBehavior or null
+        * @return the first behavior for this event, or {@code null}
         */
        public static AjaxEventBehavior findAjaxEventBehavior(Component 
component, String event)
        {
+               List<AjaxEventBehavior> behaviors = 
findAjaxEventBehaviors(component, event);
+               AjaxEventBehavior behavior = null;
+               if (behaviors != null)
+               {
+                       behavior = behaviors.get(0);
+               }
+               return behavior;
+       }
+
+       /**
+        * Finds all AjaxEventBehavior's attached  to the specified component 
with
+        * the specified event.
+        *
+        * @param component
+        * @param event
+        * @return a list of all found AjaxEventBehavior or an empty list
+        */
+       public static List<AjaxEventBehavior> findAjaxEventBehaviors(Component 
component, String event)
+       {
                Args.notEmpty(event, "event");
+               List<AjaxEventBehavior> behaviors = new 
ArrayList<AjaxEventBehavior>();
                String[] eventNames = Strings.split(event, ' ');
                for (String eventName : eventNames)
                {
@@ -194,13 +217,13 @@ public class WicketTesterHelper
                                                }
                                                if 
(eventName.equalsIgnoreCase(behaviorEventName))
                                                {
-                                                       return 
(AjaxEventBehavior)behavior;
+                                                       
behaviors.add((AjaxEventBehavior)behavior);
                                                }
                                        }
                                }
                        }
                }
-               return null;
+               return behaviors;
        }
 
        /**

Reply via email to