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; } /**
