X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fajax.js;h=f7c67b7bee2af99e0ec7d95f248c8835835e82d1;hb=45dfa3b0fc49718c4f00600d1e25a129601d08ee;hp=92d0739fa9cfcb64ddc5e5cae228050a1bcea304;hpb=c3c94823f27ee1e935586d46fd86f055f3a3d97d;p=jquery.git diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 92d0739..f7c67b7 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -70,6 +70,44 @@ test("jQuery.ajax() - error callbacks", function() { }); }); +test("Ajax events with context", function() { + expect(6); + + stop(); + var context = {}; + + function event(e){ + equals( this, context, e.type ); + } + + function callback(){ + equals( this, context, "context is preserved on callback" ); + } + + jQuery('#foo').add(context) + .ajaxSend(event) + .ajaxComplete(event) + .ajaxError(event) + .ajaxSuccess(event); + + jQuery.ajax({ + url: url("data/name.html"), + beforeSend: callback, + success: callback, + error: callback, + complete:function(){ + callback.call(this); + setTimeout(proceed, 300); + }, + context:context + }); + + function proceed(){ + jQuery('#foo').add(context).unbind(); + start(); + } +}); + test("jQuery.ajax() - disabled globals", function() { expect( 3 ); stop(); @@ -183,7 +221,7 @@ test("jQuery.ajax - dataType html", function() { }); test("serialize()", function() { - expect(6); + expect(5); equals( jQuery('#form').serialize(), "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&select1=&select2=3&select3=1&select3=2", @@ -205,24 +243,39 @@ test("serialize()", function() { "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&select1=&select2=3&select3=1&select3=2&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=", 'Multiple form serialization as query string'); + /* Temporarily disabled. Opera 10 has problems with form serialization. equals( jQuery('#form, #testForm :input').serialize(), "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&select1=&select2=3&select3=1&select3=2&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=", 'Mixed form/input serialization as query string'); + */ }); test("jQuery.param()", function() { - expect(4); + expect(8); var params = {foo:"bar", baz:42, quux:"All your base are belong to us"}; equals( jQuery.param(params), "foo=bar&baz=42&quux=All+your+base+are+belong+to+us", "simple" ); params = {someName: [1, 2, 3], regularThing: "blah" }; equals( jQuery.param(params), "someName=1&someName=2&someName=3®ularThing=blah", "with array" ); + params = {foo: ['a', 'b', 'c']}; + equals( jQuery.param(params), "foo=a&foo=b&foo=c", "with array of strings" ); + params = {"foo[]":["baz", 42, "All your base are belong to us"]}; equals( jQuery.param(params), "foo%5B%5D=baz&foo%5B%5D=42&foo%5B%5D=All+your+base+are+belong+to+us", "more array" ); params = {"foo[bar]":"baz", "foo[beep]":42, "foo[quux]":"All your base are belong to us"}; equals( jQuery.param(params), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All+your+base+are+belong+to+us", "even more arrays" ); + + params = {foo: {bar: "baz", beep: 42, quux: "All your base are belong to us"}}; + equals( jQuery.param(params), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All+your+base+are+belong+to+us", "nested object" ); + + params = {foo: {"bar[]": [1,2,3]}}; + equals( jQuery.param(params), "foo%5Bbar%5D%5B%5D=1&foo%5Bbar%5D%5B%5D=2&foo%5Bbar%5D%5B%5D=3", "nested array"); + + params = {foo: [{bar: "baz", beep: 42}, {bar: "baz2", beep: 43}]}; + equals( jQuery.param(params), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bbar%5D=baz2&foo%5Bbeep%5D=43", "nested array of objects" ); + }); test("synchronous request", function() { @@ -269,19 +322,20 @@ test("pass-through request object", function() { test("ajax cache", function () { expect(18); + stop(); var count = 0; jQuery("#firstp").bind("ajaxSuccess", function (e, xml, s) { var re = /_=(.*?)(&|$)/g; - var oldOne = null; + var oldOne = null; for (var i = 0; i < 6; i++) { - var ret = re.exec(s.url); + var ret = re.exec(s.url); if (!ret) { break; } - oldOne = ret[1]; + oldOne = ret[1]; } equals(i, 1, "Test to make sure only one 'no-cache' parameter is there"); ok(oldOne != "tobereplaced555", "Test to be sure parameter (if it was there) was replaced"); @@ -672,9 +726,10 @@ test("jQuery.ajax() - script, Remote with scheme-less URL", function() { }); test("jQuery.getJSON(String, Hash, Function) - JSON array", function() { - expect(4); + expect(5); stop(); jQuery.getJSON(url("data/json.php"), {json: "array"}, function(json) { + ok( json.length >= 2, "Check length"); 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' ); @@ -687,8 +742,10 @@ test("jQuery.getJSON(String, Function) - JSON object", function() { expect(2); stop(); jQuery.getJSON(url("data/json.php"), function(json) { - equals( json.data.lang, 'en', 'Check JSON: lang' ); - equals( json.data.length, 25, 'Check JSON: length' ); + if (json && json.data) { + equals( json.data.lang, 'en', 'Check JSON: lang' ); + equals( json.data.length, 25, 'Check JSON: length' ); + } start(); }); }); @@ -706,7 +763,10 @@ test("jQuery.getJSON - Using Native JSON", function() { stop(); jQuery.getJSON(url("data/json.php"), function(json) { - window.JSON = old; + if (!old) + delete window.JSON + else + window.JSON = old; equals( json, true, "Verifying return value" ); start(); }); @@ -787,7 +847,7 @@ test("jQuery.ajaxSetup({timeout: Number}) with localtimeout", function() { jQuery.ajax({ type: "GET", - timeout: 5000, + timeout: 15000, url: url("data/name.php?wait=1"), error: function() { ok( false, 'Check for local timeout failed' ); @@ -923,8 +983,8 @@ test("jQuery.ajax - Etag support", function() { ifModified: true, success: function(data, status) { if ( data === "FAIL" ) { - ok(true, "Opera is incapable of doing .setRequestHeader('If-None-Matches')."); - ok(true, "Opera is incapable of doing .setRequestHeader('If-None-Matches')."); + 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")