You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2015/06/04 16:20:01 UTC
[7/9] wicket git commit: WICKET-5901 Leaving veil when ajax
processing ends with redirect
WICKET-5901 Leaving veil when ajax processing ends with redirect
Add unit tests for preserving the ajax indicator until page unload (if there is redirect)
(cherry picked from commit 22e6f69b3896c011f113f6d97957e6cd46304223)
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/99b27463
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/99b27463
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/99b27463
Branch: refs/heads/WICKET-5906-7.x
Commit: 99b27463b152736045900df73e3680349c46e15a
Parents: adb475f
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sat May 30 15:51:03 2015 +0300
Committer: Andrea Del Bene <“adelbene@apache.org”>
Committed: Thu Jun 4 16:19:29 2015 +0200
----------------------------------------------------------------------
.../wicket/ajax/res/js/wicket-ajax-jquery.js | 15 ++++--
wicket-core/src/test/js/ajax.js | 54 ++++++++++++++++++++
wicket-core/src/test/js/all.html | 2 +
.../test/js/data/ajax/redirectAjaxResponse.xml | 18 +++++++
4 files changed, 86 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/99b27463/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 88d3983..e62451f 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
@@ -767,7 +767,7 @@
// support/check for non-relative redirectUrl like as provided and needed in a portlet context
if (redirectUrl.charAt(0) === '/' || rhttp.test(redirectUrl) || rhttps.test(redirectUrl)) {
context.isRedirecting = true;
- window.location = redirectUrl;
+ Wicket.Ajax.redirect(redirectUrl);
}
else {
var urlDepth = 0;
@@ -792,7 +792,7 @@
}
context.isRedirecting = true;
- window.location = calculatedRedirect;
+ Wicket.Ajax.redirect(calculatedRedirect);
}
}
else {
@@ -1241,7 +1241,7 @@
var text = Wicket.DOM.text(node);
Wicket.Log.info("Redirecting to: " + text);
context.isRedirecting = true;
- window.location = text;
+ Wicket.Ajax.redirect(text);
},
// mark the focused component so that we know if it has been replaced by response
@@ -1972,6 +1972,15 @@
process: function(data) {
var call = new Wicket.Ajax.Call();
call.process(data);
+ },
+
+ /**
+ * An abstraction over native window.location.replace() to be able to suppress it for unit tests
+ *
+ * @param url The url to redirect to
+ */
+ redirect: function(url) {
+ window.location = url;
}
},
http://git-wip-us.apache.org/repos/asf/wicket/blob/99b27463/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 d969d6d..9adf553 100644
--- a/wicket-core/src/test/js/ajax.js
+++ b/wicket-core/src/test/js/ajax.js
@@ -1288,5 +1288,59 @@ jQuery(document).ready(function() {
target.off("event1");
});
+ asyncTest('Do not hide the indicator if redirecting.', function () {
+
+ expect(2);
+
+ var oldRedirect = Wicket.Ajax.redirect;
+ Wicket.Ajax.redirect = function() {};
+
+ var attrs = {
+ u: 'data/ajax/redirectAjaxResponse.xml',
+ e: 'event1',
+ i: 'ajaxIndicator',
+ sh: [function(attrs, jqXHR, data, textStatus) {
+ var indicatorEl = Wicket.$(attrs.i);
+ equal("1", indicatorEl.getAttribute("showIncrementallyCount"));
+ }],
+ coh: [function(attrs, jqXHR, textStatus) {
+ var indicatorEl = Wicket.$(attrs.i);
+ equal("1", indicatorEl.getAttribute("showIncrementallyCount"));
+ Wicket.Ajax.redirect = oldRedirect;
+ start();
+ }]
+ };
+
+ Wicket.Ajax.ajax(attrs);
+ var target = jQuery(window);
+ target.triggerHandler("event1");
+ target.off("event1");
+ });
+
+ asyncTest('Do hide the indicator if not redirecting.', function () {
+
+ expect(2);
+
+ var attrs = {
+ u: 'data/ajax/emptyAjaxResponse.xml',
+ e: 'event1',
+ i: 'ajaxIndicator',
+ sh: [function(attrs, jqXHR, data, textStatus) {
+ var indicatorEl = Wicket.$(attrs.i);
+ equal("1", indicatorEl.getAttribute("showIncrementallyCount"));
+ }],
+ coh: [function(attrs, jqXHR, textStatus) {
+ var indicatorEl = Wicket.$(attrs.i);
+ equal("0", indicatorEl.getAttribute("showIncrementallyCount"));
+ start();
+ }]
+ };
+
+ Wicket.Ajax.ajax(attrs);
+ var target = jQuery(window);
+ target.triggerHandler("event1");
+ target.off("event1");
+ });
+
}
});
http://git-wip-us.apache.org/repos/asf/wicket/blob/99b27463/wicket-core/src/test/js/all.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/js/all.html b/wicket-core/src/test/js/all.html
index b58688f..6a03f52 100644
--- a/wicket-core/src/test/js/all.html
+++ b/wicket-core/src/test/js/all.html
@@ -169,6 +169,8 @@
<div id="usedAsContextWicket5025"></div>
<input type="text" id="inputChangeInput">
+
+ <div id="ajaxIndicator"></div>
</div>
</body>
</html>
http://git-wip-us.apache.org/repos/asf/wicket/blob/99b27463/wicket-core/src/test/js/data/ajax/redirectAjaxResponse.xml
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/js/data/ajax/redirectAjaxResponse.xml b/wicket-core/src/test/js/data/ajax/redirectAjaxResponse.xml
new file mode 100644
index 0000000..19d89e7
--- /dev/null
+++ b/wicket-core/src/test/js/data/ajax/redirectAjaxResponse.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<ajax-response><redirect><![CDATA[http://127.0.0.1]]></redirect></ajax-response>