From 4ada325479d11e34b462912b835cf5ad7369d33b Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Mon, 3 Dec 2012 11:32:19 -0500 Subject: [PATCH] More improvements per @jaubourg --- test/data/testinit.js | 50 +++++++++++++++++++++++------------------ test/data/testrunner.js | 2 +- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/test/data/testinit.js b/test/data/testinit.js index 862616d8a..bff6b8dff 100644 --- a/test/data/testinit.js +++ b/test/data/testinit.js @@ -160,34 +160,30 @@ function ajaxTest( title, expect, options ) { } var completed = false, + remaining = requestOptions.length, complete = function() { - completed = true; - delete ajaxTest.abort; - }, - abort = ajaxTest.abort = function( reason ) { - if ( !completed ) { - complete(); - ok( false, "unexpected " + reason ); - jQuery.each( requests, function( _, request ) { - if ( request && request.abort ) { - request.abort(); - } - }); + if ( !completed && --remaining === 0 ) { + completed = true; + delete ajaxTest.abort; + if ( options.teardown ) { + options.teardown(); + } + start(); } }, - requests = jQuery.map( requestOptions, function( options, index ) { + requests = jQuery.map( requestOptions, function( options ) { var request = ( options.create || jQuery.ajax )( options ), callIfDefined = function( deferType, optionType ) { var handler = options[ deferType ] || !!options[ optionType ]; - return handler ? - function() { - if ( !completed && jQuery.isFunction( handler ) ) { + return function( _, status ) { + if ( !completed ) { + if ( !handler ) { + ok( false, "unexpected " + status ); + } else if ( jQuery.isFunction( handler ) ) { handler.apply( this, arguments ); } - } : - function() { - abort( optionType ); - }; + } + }; }; if ( options.afterSend ) { @@ -196,10 +192,20 @@ function ajaxTest( title, expect, options ) { return request .done( callIfDefined( "done", "success" ) ) - .fail( callIfDefined( "fail", "error" ) ); + .fail( callIfDefined( "fail", "error" ) ) + .always( complete ); }); - jQuery.when.apply( jQuery, requests ).always( complete, options.teardown, start); + ajaxTest.abort = function( reason ) { + if ( !completed ) { + completed = true; + delete ajaxTest.abort; + ok( false, "aborted " + reason ); + jQuery.each( requests, function( i, request ) { + request.abort(); + }); + } + }; }); }; diff --git a/test/data/testrunner.js b/test/data/testrunner.js index ce9697fc4..ba6b892e3 100644 --- a/test/data/testrunner.js +++ b/test/data/testrunner.js @@ -310,7 +310,7 @@ var Globals = (function() { if ( jQuery.active !== undefined && jQuery.active !== oldActive ) { equal( jQuery.active, 0, "No AJAX requests are still active" ); if ( ajaxTest.abort ) { - ajaxTest.abort("active request"); + ajaxTest.abort("active requests"); } oldActive = jQuery.active; } -- 2.39.5