You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/02/06 09:21:01 UTC

[2/2] git commit: WICKET-4364 Think of a way to reintroduce show|hideIncrementally with the new Ajax impl

WICKET-4364
Think of a way to reintroduce show|hideIncrementally with the new Ajax impl

Add a unit test verifying that the indicator is set to 0 at the end.
Three requests are fired simultaneously - one successful, one failing due to error 404 and one that doesn't fire because of a precondition.


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

Branch: refs/heads/master
Commit: 4967decb28654a6717d31a6fe0f5019c4e994edb
Parents: 0e1199e
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Feb 6 10:18:47 2012 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Feb 6 10:18:47 2012 +0200

----------------------------------------------------------------------
 wicket-core/src/test/js/ajax.js |   79 ++++++++++++++++++++++++++++++++++
 1 files changed, 79 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/4967decb/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 77398d4..e12672f 100644
--- a/wicket-core/src/test/js/ajax.js
+++ b/wicket-core/src/test/js/ajax.js
@@ -541,5 +541,84 @@ jQuery(document).ready(function() {
 
 		});
 
+		asyncTest('show/hide incrementally (WICKET-4364)', function() {
+
+			expect(4);
+
+			var $indicator = jQuery('<div id="indicator"></div>');
+			var $el = jQuery('<div id="elementId"></div>');
+			jQuery('#qunit-fixture')
+				.append($indicator)
+				.append($el);
+
+			// counts how many complete handlers have been executed
+			var calls = 0;
+
+			// returns the number of 'shows' of the indicator
+			var getCurrentCount = function () {
+				var count = $indicator.attr('showIncrementallyCount');
+				return count ? parseInt(count, 10) : 0;
+			}
+
+			// called as 'success' for requestOne and as 'failure' for requestTwo
+			var successFailureHandler = function () {
+				var count = getCurrentCount();
+				ok(count === 1 || count === 2, "'showIncrementallyCount' must be 1 or 2. Value is: " + count);
+			};
+
+			// notifies when the last (second) complete handler is done
+			var deferred = jQuery.Deferred();
+
+			var completeHandler = function () {
+				if (++calls === 2) {
+					deferred.resolve();
+				}
+			};
+
+			var attrs = {
+				u: 'data/ajax/nonWicketResponse.json',
+				e: 'event1',
+				i: $indicator.attr('id'),
+				c: $el.attr('id'),
+				dt: 'json', // datatype
+				sh: [ successFailureHandler ],
+				fh: [ successFailureHandler ],
+				coh: [ completeHandler ],
+				wr: false // not Wicket's <ajax-response>
+			};
+
+			// binds requestOne (success)
+			Wicket.Ajax.ajax(attrs);
+
+			var attrsTwo = jQuery.extend({}, attrs, {
+				u: 'data/ajax/nonExisting.json'
+			});
+			// binds requestTwo (failure - non-existing URL => error 404)
+			Wicket.Ajax.ajax(attrsTwo);
+
+			var attrsThree = jQuery.extend({}, attrs, {
+				pre: [
+					function () {
+						ok(true, 'Request 3: Precondition called.')
+						return false;
+					}
+				]
+			});
+			// binds requestThree - not executed due to precondition
+			Wicket.Ajax.ajax(attrsThree);
+
+			// executed when the last request is in its 'onComplete' phase.
+			jQuery.when(deferred)
+				.done(function () {
+					start();
+					var count = getCurrentCount();
+					equal(0, count, "'showIncrementallyCount' must be 0 after the executions but is: " + count);
+					$indicator.remove();
+					$el.off().remove();
+				});
+
+			// fire all requests
+			$el.triggerHandler("event1");
+		});
 	}
 });