Commit 603e70b9 authored by jaubourg's avatar jaubourg

Greatly simplifies ajaxTest

parent d31cef38
...@@ -144,30 +144,21 @@ function url( value ) { ...@@ -144,30 +144,21 @@ function url( value ) {
} }
// Ajax testing helper // Ajax testing helper
var ajaxTest = (function() { function ajaxTest( title, expect, options ) {
var requestOptions;
var resolved = $.Deferred().resolve(); if ( jQuery.isFunction( options ) ) {
function getRequests( options ) {
var requests = options.requests || options.request || options || [];
if ( !jQuery.isArray(requests) ) {
requests = [ requests ];
}
return requests;
}
return function( title, expect, options ) {
if ( jQuery.isFunction(options) ) {
options = options(); options = options();
} }
options = options || []; options = options || [];
requestOptions = options.requests || options.request || options;
if ( !jQuery.isArray( requestOptions ) ) {
requestOptions = [ requestOptions ];
}
asyncTest( title, expect, function() { asyncTest( title, expect, function() {
setTimeout(function() {
if ( options.setup ) { if ( options.setup ) {
options.setup(); options.setup();
} }
var ajaxSettings = jQuery.ajaxSetup( {}, {} ); var aborted = false,
aborted = false,
abort = function( reason ) { abort = function( reason ) {
if ( !aborted ) { if ( !aborted ) {
aborted = true; aborted = true;
...@@ -177,7 +168,6 @@ var ajaxTest = (function() { ...@@ -177,7 +168,6 @@ var ajaxTest = (function() {
}); });
} }
}, },
requestOptions = getRequests( options ),
requests = jQuery.map( requestOptions, function( options ) { requests = jQuery.map( requestOptions, function( options ) {
var request = ( options.create || jQuery.ajax )( options ); var request = ( options.create || jQuery.ajax )( options );
if ( options.afterSend ) { if ( options.afterSend ) {
...@@ -185,34 +175,24 @@ var ajaxTest = (function() { ...@@ -185,34 +175,24 @@ var ajaxTest = (function() {
} }
return request; return request;
}); });
requests = jQuery.map( requests, function( request, index ) { jQuery.when.apply( jQuery, jQuery.map( requests, function( request, index ) {
function callIfDefined( type, type2 ) { function callIfDefined( deferType, optionType ) {
var handler = requestOptions[ index ][ type ] || !!requestOptions[ index ][ type2 ]; var handler = requestOptions[ index ][ deferType ] || !!requestOptions[ index ][ optionType ];
return handler ? function() { return handler ? function() {
if ( !aborted && jQuery.isFunction( handler ) ) { if ( !aborted && jQuery.isFunction( handler ) ) {
handler.apply( this, arguments ); handler.apply( this, arguments );
} }
return resolved;
} : function() { } : function() {
abort( type ); abort( optionType );
return resolved;
} }
} }
var promise = request.then( callIfDefined( "done", "success" ), callIfDefined( "fail", "error" ) ); return request.then( callIfDefined( "done", "success" ), callIfDefined( "fail", "error" ) );
promise.abort = request.abort; }) ).always(
return promise;
});
jQuery.when.apply( jQuery, requests ).done(
options.teardown, options.teardown,
function() { start
jQuery.ajaxSetup( ajaxSettings );
setTimeout( start, 0 );
}
); );
}, 0 );
}); });
}; };
})();
(function () { (function () {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment