Updated Branches: refs/heads/master 3de1a514d -> dac7fc6b5
WICKET-5024 Global ajax event for precondition is not called Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/dac7fc6b Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/dac7fc6b Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/dac7fc6b Branch: refs/heads/master Commit: dac7fc6b5235e12647c9df8386557be48b5d5bb7 Parents: 3de1a51 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Wed Feb 6 14:23:36 2013 +0100 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Wed Feb 6 14:23:36 2013 +0100 ---------------------------------------------------------------------- .../wicket/ajax/res/js/wicket-ajax-jquery.js | 2 + wicket-core/src/test/js/ajax.js | 107 ++++++++++----- 2 files changed, 72 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/dac7fc6b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js index 75ed0e4..53c09f5 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js @@ -485,6 +485,8 @@ } } + Wicket.Event.publish('/ajax/call/precondition', attrs); + if (attrs.mp) { // multipart form. jQuery.ajax() doesn't help here ... return this.submitMultipartForm(context); } http://git-wip-us.apache.org/repos/asf/wicket/blob/dac7fc6b/wicket-core/src/test/js/ajax.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/js/ajax.js b/wicket-core/src/test/js/ajax.js index c789559..7f09a7f 100644 --- a/wicket-core/src/test/js/ajax.js +++ b/wicket-core/src/test/js/ajax.js @@ -719,20 +719,23 @@ jQuery(document).ready(function() { /** * Verifies the order of execution of the callbacks. - * The order must be: before, beforeSend, after, success, complete. + * The order must be: before, precondition, beforeSend, after, success, complete. * Three consecutive executions are made on the same Ajax channel validating * that they do not overlap. */ asyncTest('callbacks order - success scenario.', function () { - expect(30); + expect(36); var order = 0, - // calculates the offset for the order depending on the execution number - offset = function(round) { - return (round * 10) - 10; - }; + // the number of assertions per iteration + numberOfTests = 12, + + // calculates the offset for the order depending on the execution number + offset = function(extraData) { + return numberOfTests * extraData.round; + }; var attrs = { u: 'data/ajax/emptyAjaxResponse.xml', @@ -742,19 +745,25 @@ jQuery(document).ready(function() { equal((1 + offset(attrs.event.extraData)), ++order, "Before handler"); } ], + pre: [ + function(attrs) { + equal((3 + offset(attrs.event.extraData)), ++order, "Precondition"); + return true; + } + ], bsh: [ function(attrs) { - equal((3 + offset(attrs.event.extraData)), ++order, "BeforeSend handler"); + equal((5 + offset(attrs.event.extraData)), ++order, "BeforeSend handler"); } ], ah: [ function(attrs) { - equal((5 + offset(attrs.event.extraData)), ++order, "After handler"); + equal((7 + offset(attrs.event.extraData)), ++order, "After handler"); } ], sh: [ function(attrs) { - equal((7 + offset(attrs.event.extraData)), ++order, "Success handler"); + equal((9 + offset(attrs.event.extraData)), ++order, "Success handler"); } ], fh: [ @@ -764,7 +773,7 @@ jQuery(document).ready(function() { ], coh: [ function(attrs) { - equal((9 + offset(attrs.event.extraData)), ++order, "Complete handler"); + equal((11 + offset(attrs.event.extraData)), ++order, "Complete handler"); } ] }; @@ -774,16 +783,21 @@ jQuery(document).ready(function() { equal((2 + offset(attrs.event.extraData)), ++order, "Global before handler"); }); + Wicket.Event.subscribe('/ajax/call/precondition', function(jqEvent, attrs) { + equal((4 + offset(attrs.event.extraData)), ++order, "Global precondition"); + return true; + }); + Wicket.Event.subscribe('/ajax/call/beforeSend', function(jqEvent, attrs) { - equal((4 + offset(attrs.event.extraData)), ++order, "Global beforeSend handler"); + equal((6 + offset(attrs.event.extraData)), ++order, "Global beforeSend handler"); }); Wicket.Event.subscribe('/ajax/call/after', function(jqEvent, attrs) { - equal((6 + offset(attrs.event.extraData)), ++order, "Global after handler"); + equal((8 + offset(attrs.event.extraData)), ++order, "Global after handler"); }); Wicket.Event.subscribe('/ajax/call/success', function(jqEvent, attrs) { - equal((8 + offset(attrs.event.extraData)), ++order, "Global success handler"); + equal((10 + offset(attrs.event.extraData)), ++order, "Global success handler"); }); Wicket.Event.subscribe('/ajax/call/failure', function() { @@ -791,11 +805,12 @@ jQuery(document).ready(function() { }); Wicket.Event.subscribe('/ajax/call/complete', function(jqEvent, attrs) { - equal((10 + offset(attrs.event.extraData)), ++order, "Global complete handler"); + equal((12 + offset(attrs.event.extraData)), ++order, "Global complete handler"); - if (attrs.event.extraData == 3) { + if (attrs.event.extraData.round === 2) { // unregister all global subscribers jQuery(document).off(); + jQuery(window).off("event1"); start(); } @@ -804,11 +819,15 @@ jQuery(document).ready(function() { Wicket.Ajax.ajax(attrs); var target = jQuery(window); - target.triggerHandler("event1", 1); // execution No1 - target.triggerHandler("event1", 2); // execution No2 - target.triggerHandler("event1", 3); // execution No3 + console.log('Iteration 1', order); + target.triggerHandler("event1", {"round": 0}); // execution No1 + + console.log('Iteration 2', order); + target.triggerHandler("event1", {"round": 1}); // execution No2 + + console.log('Iteration 3', order); + target.triggerHandler("event1", {"round": 2}); // execution No3 - target.off("event1"); }); /** @@ -819,14 +838,17 @@ jQuery(document).ready(function() { */ asyncTest('callbacks order - failure scenario.', function () { - expect(30); + expect(36); var order = 0, + // the number of assertions per iteration + numberOfTests = 12, + // calculates the offset for the order depending on the execution number - offset = function(round) { - return (round * 10) - 10; - }; + offset = function(extraData) { + return numberOfTests * extraData.round; + }; var attrs = { u: 'data/ajax/nonExistingResponse.xml', @@ -836,14 +858,20 @@ jQuery(document).ready(function() { equal((1 + offset(attrs.event.extraData)), ++order, "Before handler"); } ], + pre: [ + function(attrs) { + equal((3 + offset(attrs.event.extraData)), ++order, "Precondition"); + return true; + } + ], bsh: [ function(attrs) { - equal((3 + offset(attrs.event.extraData)), ++order, "BeforeSend handler"); + equal((5 + offset(attrs.event.extraData)), ++order, "BeforeSend handler"); } ], ah: [ function(attrs) { - equal((5 + offset(attrs.event.extraData)), ++order, "After handler"); + equal((7 + offset(attrs.event.extraData)), ++order, "After handler"); } ], sh: [ @@ -853,12 +881,12 @@ jQuery(document).ready(function() { ], fh: [ function(attrs) { - equal((7 + offset(attrs.event.extraData)), ++order, "Failure handler"); + equal((9 + offset(attrs.event.extraData)), ++order, "Failure handler"); } ], coh: [ function(attrs) { - equal((9 + offset(attrs.event.extraData)), ++order, "Complete handler"); + equal((11 + offset(attrs.event.extraData)), ++order, "Complete handler"); } ] }; @@ -868,12 +896,17 @@ jQuery(document).ready(function() { equal((2 + offset(attrs.event.extraData)), ++order, "Global before handler"); }); + Wicket.Event.subscribe('/ajax/call/precondition', function(jqEvent, attrs) { + equal((4 + offset(attrs.event.extraData)), ++order, "Global precondition"); + return true; + }); + Wicket.Event.subscribe('/ajax/call/beforeSend', function(jqEvent, attrs) { - equal((4 + offset(attrs.event.extraData)), ++order, "Global beforeSend handler"); + equal((6 + offset(attrs.event.extraData)), ++order, "Global beforeSend handler"); }); Wicket.Event.subscribe('/ajax/call/after', function(jqEvent, attrs) { - equal((6 + offset(attrs.event.extraData)), ++order, "Global after handler"); + equal((8 + offset(attrs.event.extraData)), ++order, "Global after handler"); }); Wicket.Event.subscribe('/ajax/call/success', function() { @@ -881,16 +914,18 @@ jQuery(document).ready(function() { }); Wicket.Event.subscribe('/ajax/call/failure', function(jqEvent, attrs) { - equal((8 + offset(attrs.event.extraData)), ++order, "Global failure handler"); + equal((10 + offset(attrs.event.extraData)), ++order, "Global failure handler"); }); Wicket.Event.subscribe('/ajax/call/complete', function(jqEvent, attrs) { - equal((10 + offset(attrs.event.extraData)), ++order, "Global complete handler"); + equal((12 + offset(attrs.event.extraData)), ++order, "Global complete handler"); - if (attrs.event.extraData == 3) { + if (attrs.event.extraData.round === 2) { // unregister all global subscribers jQuery(document).off(); + jQuery(window).off("event1"); + start(); } }); @@ -898,11 +933,9 @@ jQuery(document).ready(function() { Wicket.Ajax.ajax(attrs); var target = jQuery(window); - target.triggerHandler("event1", 1); // execution No1 - target.triggerHandler("event1", 2); // execution No2 - target.triggerHandler("event1", 3); // execution No3 - - target.off("event1"); + target.triggerHandler("event1", {"round": 0}); // execution No1 + target.triggerHandler("event1", {"round": 1}); // execution No2 + target.triggerHandler("event1", {"round": 2}); // execution No3 }); /**
