X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=test%2Funit%2Fajax.js;h=a536b9f832182a9463b64c8709e129d04a08a951;hb=f43572d3b86074afc561822b7fd9592e1f05d19b;hp=9d088f3c72348a6e8e642729dc2468f517655555;hpb=7c9a5e6016c2fcd38872367a891e5b3887d3df53;p=jquery.git diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 9d088f3..a536b9f 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -1221,10 +1221,10 @@ test("jQuery.getScript(String, Function) - no callback", function() { jQuery.each( [ "Same Domain", "Cross Domain" ] , function( crossDomain , label ) { test("jQuery.ajax() - JSONP, " + label, function() { - expect(16); + expect(20); var count = 0; - function plus(){ if ( ++count == 16 ) start(); } + function plus(){ if ( ++count == 18 ) start(); } stop(); @@ -1365,6 +1365,38 @@ jQuery.each( [ "Same Domain", "Cross Domain" ] , function( crossDomain , label ) }); jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + jsonpCallback: "functionToCleanUp", + success: function(data){ + ok( data.data, "JSON results returned (GET, custom callback name to be cleaned up)" ); + strictEqual( window.functionToCleanUp, undefined, "Callback was removed (GET, custom callback name to be cleaned up)" ); + plus(); + var xhr; + jQuery.ajax({ + url: "data/jsonp.php", + dataType: "jsonp", + crossDomain: crossDomain, + jsonpCallback: "functionToCleanUp", + beforeSend: function( jXHR ) { + xhr = jXHR; + return false; + } + }); + xhr.error(function() { + ok( true, "Ajax error JSON (GET, custom callback name to be cleaned up)" ); + strictEqual( window.functionToCleanUp, undefined, "Callback was removed after early abort (GET, custom callback name to be cleaned up)" ); + plus(); + }); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, custom callback name to be cleaned up)" ); + plus(); + } + }); + + jQuery.ajax({ type: "POST", url: "data/jsonp.php", dataType: "jsonp", @@ -1526,17 +1558,23 @@ test("jQuery.ajax() - malformed JSON", function() { }); test("jQuery.ajax() - script by content-type", function() { - expect(1); + expect(2); stop(); - jQuery.ajax({ - url: "data/script.php", - data: { header: "script" }, - success: function() { - start(); - } - }); + jQuery.when( + + jQuery.ajax({ + url: "data/script.php", + data: { header: "script" } + }), + + jQuery.ajax({ + url: "data/script.php", + data: { header: "ecma" } + }) + + ).then( start, start ); }); test("jQuery.ajax() - json by content-type", function() { @@ -1647,7 +1685,7 @@ test("jQuery.post - data", 3, function() { jQuery( 'math', xml ).each( function() { equals( jQuery( 'calculation', this ).text(), '5-2', 'Check for XML' ); equals( jQuery( 'result', this ).text(), '3', 'Check for XML' ); - }) + }); }), jQuery.ajax({ @@ -1829,96 +1867,105 @@ test("data option: empty bodies for non-GET requests", function() { }); }); -test("jQuery.ajax - If-Modified-Since support", function() { - expect( 3 ); +var ifModifiedNow = new Date(); - stop(); +jQuery.each( { " (cache)": true, " (no cache)": false }, function( label, cache ) { - var url = "data/if_modified_since.php?ts=" + new Date(); + test("jQuery.ajax - If-Modified-Since support" + label, function() { + expect( 3 ); - jQuery.ajax({ - url: url, - ifModified: true, - success: function(data, status) { - equals(status, "success"); + stop(); - jQuery.ajax({ - url: url, - ifModified: true, - success: function(data, status) { - if ( data === "FAIL" ) { - ok(true, "Opera is incapable of doing .setRequestHeader('If-Modified-Since')."); - ok(true, "Opera is incapable of doing .setRequestHeader('If-Modified-Since')."); - } else { - equals(status, "notmodified"); - ok(data == null, "response body should be empty"); + var url = "data/if_modified_since.php?ts=" + ifModifiedNow++; + + jQuery.ajax({ + url: url, + ifModified: true, + cache: cache, + success: function(data, status) { + equals(status, "success" ); + + jQuery.ajax({ + url: url, + ifModified: true, + cache: cache, + success: function(data, status) { + if ( data === "FAIL" ) { + ok(jQuery.browser.opera, "Opera is incapable of doing .setRequestHeader('If-Modified-Since')."); + ok(jQuery.browser.opera, "Opera is incapable of doing .setRequestHeader('If-Modified-Since')."); + } else { + equals(status, "notmodified"); + ok(data == null, "response body should be empty"); + } + start(); + }, + error: function() { + // Do this because opera simply refuses to implement 304 handling :( + // A feature-driven way of detecting this would be appreciated + // See: http://gist.github.com/599419 + ok(jQuery.browser.opera, "error"); + ok(jQuery.browser.opera, "error"); + start(); } - start(); - }, - error: function() { - // Do this because opera simply refuses to implement 304 handling :( - // A feature-driven way of detecting this would be appreciated - // See: http://gist.github.com/599419 - ok(jQuery.browser.opera, "error"); - ok(jQuery.browser.opera, "error"); - start(); - } - }); - }, - error: function() { - equals(false, "error"); - // Do this because opera simply refuses to implement 304 handling :( - // A feature-driven way of detecting this would be appreciated - // See: http://gist.github.com/599419 - ok(jQuery.browser.opera, "error"); - start(); - } + }); + }, + error: function() { + equals(false, "error"); + // Do this because opera simply refuses to implement 304 handling :( + // A feature-driven way of detecting this would be appreciated + // See: http://gist.github.com/599419 + ok(jQuery.browser.opera, "error"); + start(); + } + }); }); -}); - -test("jQuery.ajax - Etag support", function() { - expect( 3 ); - stop(); + test("jQuery.ajax - Etag support" + label, function() { + expect( 3 ); - var url = "data/etag.php?ts=" + new Date(); + stop(); - jQuery.ajax({ - url: url, - ifModified: true, - success: function(data, status) { - equals(status, "success"); + var url = "data/etag.php?ts=" + ifModifiedNow++; - jQuery.ajax({ - url: url, - ifModified: true, - success: function(data, status) { - if ( data === "FAIL" ) { - ok(true, "Opera is incapable of doing .setRequestHeader('If-None-Match')."); - ok(true, "Opera is incapable of doing .setRequestHeader('If-None-Match')."); - } else { - equals(status, "notmodified"); - ok(data == null, "response body should be empty"); + jQuery.ajax({ + url: url, + ifModified: true, + cache: cache, + success: function(data, status) { + equals(status, "success" ); + + jQuery.ajax({ + url: url, + ifModified: true, + cache: cache, + success: function(data, status) { + if ( data === "FAIL" ) { + ok(jQuery.browser.opera, "Opera is incapable of doing .setRequestHeader('If-None-Match')."); + ok(jQuery.browser.opera, "Opera is incapable of doing .setRequestHeader('If-None-Match')."); + } else { + equals(status, "notmodified"); + ok(data == null, "response body should be empty"); + } + start(); + }, + error: function() { + // Do this because opera simply refuses to implement 304 handling :( + // A feature-driven way of detecting this would be appreciated + // See: http://gist.github.com/599419 + ok(jQuery.browser.opera, "error"); + ok(jQuery.browser.opera, "error"); + start(); } - start(); - }, - error: function() { - // Do this because opera simply refuses to implement 304 handling :( - // A feature-driven way of detecting this would be appreciated - // See: http://gist.github.com/599419 - ok(jQuery.browser.opera, "error"); - ok(jQuery.browser.opera, "error"); - start(); - } - }); - }, - error: function() { - // Do this because opera simply refuses to implement 304 handling :( - // A feature-driven way of detecting this would be appreciated - // See: http://gist.github.com/599419 - ok(jQuery.browser.opera, "error"); - start(); - } + }); + }, + error: function() { + // Do this because opera simply refuses to implement 304 handling :( + // A feature-driven way of detecting this would be appreciated + // See: http://gist.github.com/599419 + ok(jQuery.browser.opera, "error"); + start(); + } + }); }); });