X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fajax.js;h=fc2ab9e3367e60442b16b4b202cb607dbf5d7f44;hb=bf802496c6b1055222814e8cd5185c023eadf202;hp=5274b6850205cabb0f854dbc38c41bd5e270d75f;hpb=aee221d33c2db2c76639dabeca2b1e3d022e348e;p=jquery.git diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 5274b68..fc2ab9e 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -136,6 +136,27 @@ test("$.ajax - beforeSend", function() { }); }); +test("$.ajax - beforeSend, cancel request (#2688)", function() { + expect(2); + var request = $.ajax({ + url: url("data/name.html"), + beforeSend: function() { + ok( true, "beforeSend got called, canceling" ); + return false; + }, + success: function() { + ok( false, "request didn't get canceled" ); + }, + complete: function() { + ok( false, "request didn't get canceled" ); + }, + error: function() { + ok( false, "request didn't get canceled" ); + } + }); + ok( request === false, "canceled request must return false instead of XMLHttpRequest instance" ); +}); + var foobar; test("$.ajax - dataType html", function() { @@ -146,8 +167,8 @@ test("$.ajax - dataType html", function() { testFoo = undefined; var verifyEvaluation = function() { - ok( testFoo == "foo", 'Check if script was evaluated for datatype html' ); - ok( foobar == "bar", 'Check if script src was evaluated for datatype html' ); + equals( testFoo, "foo", 'Check if script was evaluated for datatype html' ); + equals( foobar, "bar", 'Check if script src was evaluated for datatype html' ); start(); }; @@ -218,16 +239,26 @@ test("synchronous request with callbacks", function() { }); test("pass-through request object", function() { - expect(6); + expect(8); stop(true); var target = "data/name.html"; - var count = 0; + var successCount = 0; + var errorCount = 0; + var errorEx = ""; var success = function() { - // Re-enabled because a bug was found in the unit test that probably caused the problem - if(++count == 5) - start(); + successCount++; }; + $("#foo").ajaxError(function (e, xml, s, ex) { + errorCount++; + errorEx += ": " + xml.status; + }); + $("#foo").one('ajaxStop', function () { + equals(successCount, 5, "Check all ajax calls successful"); + equals(errorCount, 0, "Check no ajax errors (status" + errorEx + ")"); + $("#foo").unbind('ajaxError'); + start(); + }); ok( $.get(url(target), success), "get" ); ok( $.post(url(target), success), "post" ); @@ -267,19 +298,15 @@ test("ajax cache", function () { }); test("global ajaxSettings", function() { - expect(3); + expect(2); var tmp = jQuery.extend({}, jQuery.ajaxSettings); - var orig = { url: "data/with_fries.xml", data: null }; + var orig = { url: "data/with_fries.xml" }; var t; $.ajaxSetup({ data: {foo: 'bar', bar: 'BAR'} }); t = jQuery.extend({}, orig); - $.ajax(t); - ok( t.url.indexOf('foo') > -1 && t.url.indexOf('bar') > -1, "Check extending null" ); - - t = jQuery.extend({}, orig); t.data = {}; $.ajax(t); ok( t.url.indexOf('foo') > -1 && t.url.indexOf('bar') > -1, "Check extending {}" ); @@ -307,6 +334,19 @@ test("load('url selector')", function() { }); }); +test("load(String, Function) with ajaxSetup on dataType json, see #2046", function() { + expect(1); + stop(); + $.ajaxSetup({ dataType: "json" }); + $("#first").ajaxComplete(function (e, xml, s) { + equals( s.dataType, "html", "Verify the load() dataType was html" ); + $("#first").unbind("ajaxComplete"); + $.ajaxSetup({ dataType: "" }); + start(); + }); + $('#first').load("data/test3.html"); +}); + test("load(String, Function) - simple: inject text into DOM", function() { expect(2); stop(); @@ -322,15 +362,15 @@ test("load(String, Function) - check scripts", function() { window.testFoo = undefined; window.foobar = null; var verifyEvaluation = function() { - equals( foobar, "bar", 'Check if script src was evaluated after load' ); - equals( $('#ap').html(), 'bar', 'Check if script evaluation has modified DOM'); - start(); + equals( foobar, "bar", 'Check if script src was evaluated after load' ); + equals( $('#ap').html(), 'bar', 'Check if script evaluation has modified DOM'); + start(); }; $('#first').load(url('data/test.html'), function() { - ok( $('#first').html().match(/^html text/), 'Check content after loading html' ); - equals( $('#foo').html(), 'foo', 'Check if script evaluation has modified DOM'); - equals( testFoo, "foo", 'Check if script was evaluated after load' ); - setTimeout(verifyEvaluation, 600); + ok( $('#first').html().match(/^html text/), 'Check content after loading html' ); + equals( $('#foo').html(), 'foo', 'Check if script evaluation has modified DOM'); + equals( testFoo, "foo", 'Check if script was evaluated after load' ); + setTimeout(verifyEvaluation, 600); }); }); @@ -339,9 +379,9 @@ test("load(String, Function) - check file with only a script tag", function() { stop(); testFoo = undefined; $('#first').load(url('data/test2.html'), function() { - ok( $('#foo').html() == 'foo', 'Check if script evaluation has modified DOM'); - ok( testFoo == "foo", 'Check if script was evaluated after load' ); - start(); + equals( $('#foo').html(), 'foo', 'Check if script evaluation has modified DOM'); + equals( testFoo, "foo", 'Check if script was evaluated after load' ); + start(); }); }); @@ -362,6 +402,7 @@ test("$.get(String, Hash, Function) - parse xml and use text() on nodes", functi test("$.getScript(String, Function) - with callback", function() { expect(2); stop(); + window.foobar = null; $.getScript(url("data/test.js"), function() { equals( foobar, "bar", 'Check if script was evaluated' ); setTimeout(start, 100); @@ -388,6 +429,10 @@ test("$.ajax() - JSONP, Local", function() { success: function(data){ ok( data.data, "JSON results returned (GET, no callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, no callback)" ); + plus(); } }); @@ -397,6 +442,10 @@ test("$.ajax() - JSONP, Local", function() { success: function(data){ ok( data.data, "JSON results returned (GET, url callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, url callback)" ); + plus(); } }); @@ -407,16 +456,24 @@ test("$.ajax() - JSONP, Local", function() { success: function(data){ ok( data.data, "JSON results returned (GET, data callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, data callback)" ); + plus(); } }); $.ajax({ url: "data/jsonp.php", dataType: "jsonp", - data: { callback: "?" }, + jsonp: "callback", success: function(data){ ok( data.data, "JSON results returned (GET, data obj callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, data obj callback)" ); + plus(); } }); @@ -427,6 +484,10 @@ test("$.ajax() - JSONP, Local", function() { success: function(data){ ok( data.data, "JSON results returned (POST, no callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, data obj callback)" ); + plus(); } }); @@ -438,17 +499,25 @@ test("$.ajax() - JSONP, Local", function() { success: function(data){ ok( data.data, "JSON results returned (POST, data callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (POST, data callback)" ); + plus(); } }); $.ajax({ type: "POST", url: "data/jsonp.php", - data: { callback: "?" }, + jsonp: "callback", dataType: "jsonp", success: function(data){ ok( data.data, "JSON results returned (POST, data obj callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (POST, data obj callback)" ); + plus(); } }); }); @@ -469,6 +538,10 @@ test("$.ajax() - JSONP, Remote", function() { success: function(data){ ok( data.data, "JSON results returned (GET, no callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, no callback)" ); + plus(); } }); @@ -478,6 +551,10 @@ test("$.ajax() - JSONP, Remote", function() { success: function(data){ ok( data.data, "JSON results returned (GET, url callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, url callback)" ); + plus(); } }); @@ -488,16 +565,24 @@ test("$.ajax() - JSONP, Remote", function() { success: function(data){ ok( data.data, "JSON results returned (GET, data callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, data callback)" ); + plus(); } }); $.ajax({ url: base + "data/jsonp.php", dataType: "jsonp", - data: { callback: "?" }, + jsonp: "callback", success: function(data){ ok( data.data, "JSON results returned (GET, data obj callback)" ); plus(); + }, + error: function(data){ + ok( false, "Ajax error JSON (GET, data obj callback)" ); + plus(); } }); }); @@ -509,6 +594,46 @@ test("$.ajax() - script, Remote", function() { stop(); + window.foobar = null; + $.ajax({ + url: base + "data/test.js", + dataType: "script", + success: function(data){ + ok( foobar, "Script results returned (GET, no callback)" ); + start(); + } + }); +}); + +test("$.ajax() - script, Remote with POST", function() { + expect(3); + + var base = window.location.href.replace(/\?.*$/, ""); + + stop(); + + window.foobar = null; + $.ajax({ + url: base + "data/test.js", + type: "POST", + dataType: "script", + success: function(data, status){ + ok( foobar, "Script results returned (GET, no callback)" ); + equals( status, "success", "Script results returned (GET, no callback)" ); + start(); + } + }); +}); + +test("$.ajax() - script, Remote with scheme-less URL", function() { + expect(2); + + var base = window.location.href.replace(/\?.*$/, ""); + base = base.replace(/^.*?\/\//, "//"); + + stop(); + + window.foobar = null; $.ajax({ url: base + "data/test.js", dataType: "script", @@ -523,10 +648,10 @@ test("$.getJSON(String, Hash, Function) - JSON array", function() { expect(4); stop(); $.getJSON(url("data/json.php"), {json: "array"}, function(json) { - ok( json[0].name == 'John', 'Check JSON: first, name' ); - ok( json[0].age == 21, 'Check JSON: first, age' ); - ok( json[1].name == 'Peter', 'Check JSON: second, name' ); - ok( json[1].age == 25, 'Check JSON: second, age' ); + equals( json[0].name, 'John', 'Check JSON: first, name' ); + equals( json[0].age, 21, 'Check JSON: first, age' ); + equals( json[1].name, 'Peter', 'Check JSON: second, name' ); + equals( json[1].age, 25, 'Check JSON: second, age' ); start(); }); }); @@ -535,21 +660,21 @@ test("$.getJSON(String, Function) - JSON object", function() { expect(2); stop(); $.getJSON(url("data/json.php"), function(json) { - ok( json.data.lang == 'en', 'Check JSON: lang' ); - ok( json.data.length == 25, 'Check JSON: length' ); + equals( json.data.lang, 'en', 'Check JSON: lang' ); + equals( json.data.length, 25, 'Check JSON: length' ); start(); }); }); -test("$.getJSON(String, Function) - Remote JSON object with assignment", function() { +test("$.getJSON(String, Function) - JSON object with absolute url to local content", function() { expect(2); var base = window.location.href.replace(/\?.*$/, ""); stop(); - $.getJSON(base + "data/json_assigned_obj.js", function() { - ok( typeof json_assigned_obj == "object", 'Check JSON loaded' ); - equals( json_assigned_obj.test, "worked", 'Check JSON obj.test' ); + $.getJSON(url(base + "data/json.php"), function(json) { + equals( json.data.lang, 'en', 'Check JSON: lang' ); + equals( json.data.length, 25, 'Check JSON: length' ); start(); }); }); @@ -559,15 +684,15 @@ test("$.post(String, Hash, Function) - simple with xml", function() { stop(); $.post(url("data/name.php"), {xml: "5-2"}, function(xml){ $('math', xml).each(function() { - ok( $('calculation', this).text() == '5-2', 'Check for XML' ); - ok( $('result', this).text() == '3', 'Check for XML' ); + equals( $('calculation', this).text(), '5-2', 'Check for XML' ); + equals( $('result', this).text(), '3', 'Check for XML' ); }); }); $.post(url("data/name.php?xml=5-2"), {}, function(xml){ $('math', xml).each(function() { - ok( $('calculation', this).text() == '5-2', 'Check for XML' ); - ok( $('result', this).text() == '3', 'Check for XML' ); + equals( $('calculation', this).text(), '5-2', 'Check for XML' ); + equals( $('result', this).text(), '3', 'Check for XML' ); }); start(); }); @@ -636,7 +761,7 @@ test("$.ajax - simple get", function() { type: "GET", url: url("data/name.php?name=foo"), success: function(msg){ - ok( msg == 'bar', 'Check for GET' ); + equals( msg, 'bar', 'Check for GET' ); start(); } }); @@ -650,7 +775,7 @@ test("$.ajax - simple post", function() { url: url("data/name.php"), data: "name=peter", success: function(msg){ - ok( msg == 'pan', 'Check for POST' ); + equals( msg, 'pan', 'Check for POST' ); start(); } }); @@ -662,7 +787,7 @@ test("ajaxSetup()", function() { $.ajaxSetup({ url: url("data/name.php?name=foo"), success: function(msg){ - ok( msg == 'bar', 'Check for GET' ); + equals( msg, 'bar', 'Check for GET' ); start(); } }); @@ -682,6 +807,22 @@ test("custom timeout does not set error message when timeout occurs, see #970", }); }); +test("data option: evaluate function values (#2806)", function() { + stop(); + $.ajax({ + url: "data/echoQuery.php", + data: { + key: function() { + return "value"; + } + }, + success: function(result) { + equals( result, "key=value" ); + start(); + } + }) +}); + } //}