X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fajax.js;h=d5f2bc0cf09a9f5e3c5b656ba620b8446afefc58;hb=69497c3fd7ff560be0e47b4c65076915cca756bc;hp=d609c02394030d254b97281eff0d7cccc9a4cb1c;hpb=8c9d32723a8943d4595eb5e04be8f891a8ff7a7f;p=jquery.git diff --git a/test/unit/ajax.js b/test/unit/ajax.js index d609c02..d5f2bc0 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -135,7 +135,7 @@ test("jQuery.ajax() - success callbacks (oncomplete binding)", function() { .error(function(){ ok(false, "error"); }) .complete(function(){ start(); }); } - }) + }); }, 13); }); @@ -173,7 +173,7 @@ test("jQuery.ajax() - success callbacks (very late binding)", function() { .complete(function(){ start(); }); },100); } - }) + }); }, 13); }); @@ -183,7 +183,7 @@ test("jQuery.ajax() - success callbacks (order)", function() { jQuery.ajaxSetup({ timeout: 0 }); stop(); - + var testString = ""; setTimeout(function(){ @@ -243,9 +243,9 @@ test("jQuery.ajax() - error callbacks", function() { test(".ajax() - headers" , function() { expect( 2 ); - + stop(); - + var requestHeaders = { siMPle: "value", "SometHing-elsE": "other value", @@ -253,11 +253,11 @@ test(".ajax() - headers" , function() { }, list = [], i; - + for( i in requestHeaders ) { list.push( i ); } - + jQuery.ajax(url("data/headers.php?keys="+list.join( "_" ) ), { headers: requestHeaders, success: function( data , _ , xhr ) { @@ -266,19 +266,55 @@ test(".ajax() - headers" , function() { tmp.push( i , ": " , requestHeaders[ i ] , "\n" ); } tmp = tmp.join( "" ); - + equals( data , tmp , "Headers were sent" ); equals( xhr.getResponseHeader( "Sample-Header" ) , "Hello World" , "Sample header received" ); start(); }, error: function(){ ok(false, "error"); } }); - + +}); + +test(".ajax() - contentType" , function() { + + expect( 2 ); + + stop(); + + var count = 2; + + function restart() { + if ( ! --count ) { + start(); + } + } + + jQuery.ajax(url("data/headers.php?keys=content-type" ), { + contentType: "test", + success: function( data ) { + strictEqual( data , "content-type: test\n" , "Test content-type is sent when options.contentType is set" ); + }, + complete: function() { + restart(); + } + }); + + jQuery.ajax(url("data/headers.php?keys=content-type" ), { + contentType: false, + success: function( data ) { + strictEqual( data , "content-type: \n" , "Test content-type is not sent when options.contentType===false" ); + }, + complete: function() { + restart(); + } + }); + }); test(".ajax() - hash", function() { expect(3); - + jQuery.ajax({ url: "data/name.html#foo", beforeSend: function( xhr, settings ) { @@ -286,7 +322,7 @@ test(".ajax() - hash", function() { return false; } }); - + jQuery.ajax({ url: "data/name.html?abc#foo", beforeSend: function( xhr, settings ) { @@ -294,7 +330,7 @@ test(".ajax() - hash", function() { return false; } }); - + jQuery.ajax({ url: "data/name.html?abc#foo", data: { "test": 123 }, @@ -308,7 +344,7 @@ test(".ajax() - hash", function() { test(".ajax() - 304", function() { expect( 1 ); stop(); - + jQuery.ajax({ url: url("data/notmodified.php"), success: function(){ ok(true, "304 ok"); }, @@ -373,10 +409,10 @@ test("jQuery.ajax() - abort", function() { test("Ajax events with context", function() { expect(14); - + stop(); var context = document.createElement("div"); - + function event(e){ equals( this, context, e.type ); } @@ -392,7 +428,7 @@ test("Ajax events with context", function() { equals( typeof this.url, "string", "context is settings on callback " + msg ); }; } - + jQuery('#foo').add(context) .ajaxSend(event) .ajaxComplete(event) @@ -438,7 +474,7 @@ test("jQuery.ajax context modification", function() { stop(); - var obj = {} + var obj = {}; jQuery.ajax({ url: url("data/name.html"), @@ -529,7 +565,7 @@ test("jQuery.ajax - HEAD requests", function() { success: function(data, status, xhr){ var h = xhr.getAllResponseHeaders(); ok( /Date/i.test(h), 'No Date in HEAD response' ); - + jQuery.ajax({ url: url("data/name.html"), data: { whip_it: "good" }, @@ -650,20 +686,20 @@ test("serialize()", function() { 'Check input serialization as query string'); equals( jQuery('#testForm').serialize(), - 'T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=', + 'T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=', 'Check form serialization as query string'); equals( jQuery('#testForm :input').serialize(), - 'T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=', + 'T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=', 'Check input serialization as query string'); equals( jQuery('#form, #testForm').serialize(), - "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&select5=3&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=", + "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&select5=3&T3=%3F%0D%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&email=dave%40jquery.com&number=43&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=", + "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=", 'Mixed form/input serialization as query string'); */ jQuery("#html5email, #html5number").remove(); @@ -671,9 +707,9 @@ test("serialize()", function() { test("jQuery.param()", function() { expect(22); - + equals( !jQuery.ajaxSettings.traditional, true, "traditional flag, falsy by default" ); - + 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" ); @@ -688,13 +724,13 @@ test("jQuery.param()", function() { 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", "even more arrays" ); - + params = { a:[1,2], b:{ c:3, d:[4,5], e:{ x:[6], y:7, z:[8,9] }, f:true, g:false, h:undefined }, i:[10,11], j:true, k:false, l:[undefined,0], m:"cowboy hat?" }; equals( decodeURIComponent( jQuery.param(params) ), "a[]=1&a[]=2&b[c]=3&b[d][]=4&b[d][]=5&b[e][x][]=6&b[e][y]=7&b[e][z][]=8&b[e][z][]=9&b[f]=true&b[g]=false&b[h]=undefined&i[]=10&i[]=11&j=true&k=false&l[]=undefined&l[]=0&m=cowboy+hat?", "huge structure" ); - + params = { a: [ 0, [ 1, 2 ], [ 3, [ 4, 5 ], [ 6 ] ], { b: [ 7, [ 8, 9 ], [ { c: 10, d: 11 } ], [ [ 12 ] ], [ [ [ 13 ] ] ], { e: { f: { g: [ 14, [ 15 ] ] } } }, 16 ] }, 17 ] }; equals( decodeURIComponent( jQuery.param(params) ), "a[]=0&a[1][]=1&a[1][]=2&a[2][]=3&a[2][1][]=4&a[2][1][]=5&a[2][2][]=6&a[3][b][]=7&a[3][b][1][]=8&a[3][b][1][]=9&a[3][b][2][0][c]=10&a[3][b][2][0][d]=11&a[3][b][3][0][]=12&a[3][b][4][0][0][]=13&a[3][b][5][e][f][g][]=14&a[3][b][5][e][f][g][1][]=15&a[3][b][]=16&a[]=17", "nested arrays" ); - + params = { a:[1,2], b:{ c:3, d:[4,5], e:{ x:[6], y:7, z:[8,9] }, f:true, g:false, h:undefined }, i:[10,11], j:true, k:false, l:[undefined,0], m:"cowboy hat?" }; equals( jQuery.param(params,true), "a=1&a=2&b=%5Bobject+Object%5D&i=10&i=11&j=true&k=false&l=undefined&l=0&m=cowboy+hat%3F", "huge structure, forced traditional" ); @@ -706,7 +742,7 @@ test("jQuery.param()", function() { equals( jQuery.param({"foo": {"bar": {}} }), "foo%5Bbar%5D=", "Empty object param" ); jQuery.ajaxSetup({ traditional: true }); - + 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" ); @@ -721,16 +757,16 @@ test("jQuery.param()", function() { 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 = { a:[1,2], b:{ c:3, d:[4,5], e:{ x:[6], y:7, z:[8,9] }, f:true, g:false, h:undefined }, i:[10,11], j:true, k:false, l:[undefined,0], m:"cowboy hat?" }; equals( jQuery.param(params), "a=1&a=2&b=%5Bobject+Object%5D&i=10&i=11&j=true&k=false&l=undefined&l=0&m=cowboy+hat%3F", "huge structure" ); - + params = { a: [ 0, [ 1, 2 ], [ 3, [ 4, 5 ], [ 6 ] ], { b: [ 7, [ 8, 9 ], [ { c: 10, d: 11 } ], [ [ 12 ] ], [ [ [ 13 ] ] ], { e: { f: { g: [ 14, [ 15 ] ] } } }, 16 ] }, 17 ] }; equals( jQuery.param(params), "a=0&a=1%2C2&a=3%2C4%2C5%2C6&a=%5Bobject+Object%5D&a=17", "nested arrays (not possible when jQuery.param.traditional == true)" ); - + params = { a:[1,2], b:{ c:3, d:[4,5], e:{ x:[6], y:7, z:[8,9] }, f:true, g:false, h:undefined }, i:[10,11], j:true, k:false, l:[undefined,0], m:"cowboy hat?" }; equals( decodeURIComponent( jQuery.param(params,false) ), "a[]=1&a[]=2&b[c]=3&b[d][]=4&b[d][]=5&b[e][x][]=6&b[e][y]=7&b[e][z][]=8&b[e][z][]=9&b[f]=true&b[g]=false&b[h]=undefined&i[]=10&i[]=11&j=true&k=false&l[]=undefined&l[]=0&m=cowboy+hat?", "huge structure, forced not traditional" ); - + params = { param1: null }; equals( jQuery.param(params,false), "param1=null", "Make sure that null params aren't traversed." ); }); @@ -779,7 +815,7 @@ test("pass-through request object", function() { test("ajax cache", function () { expect(18); - + stop(); var count = 0; @@ -1192,7 +1228,7 @@ test("jQuery.ajax() - script, Remote with POST", function() { expect(3); var base = window.location.href.replace(/[^\/]*$/, ""); - + stop(); jQuery.ajax({ @@ -1333,7 +1369,7 @@ test("jQuery.getJSON(String, Function) - JSON object", function() { test("jQuery.getJSON - Using Native JSON", function() { expect(2); - + var old = window.JSON; JSON = { parse: function(str){ @@ -1522,7 +1558,7 @@ test("data option: evaluate function values (#2806)", function() { equals( result, "key=value" ); start(); } - }) + }); }); test("data option: empty bodies for non-GET requests", function() { @@ -1535,7 +1571,7 @@ test("data option: empty bodies for non-GET requests", function() { equals( result, "" ); start(); } - }) + }); }); test("jQuery.ajax - If-Modified-Since support", function() { @@ -1548,19 +1584,19 @@ test("jQuery.ajax - If-Modified-Since support", function() { jQuery.ajax({ url: url, ifModified: true, - success: function(data, status) { + success: function(data, status) { equals(status, "success"); - + jQuery.ajax({ url: url, ifModified: true, - success: function(data, status) { + 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") + ok(data == null, "response body should be empty"); } start(); }, @@ -1595,19 +1631,19 @@ test("jQuery.ajax - Etag support", function() { jQuery.ajax({ url: url, ifModified: true, - success: function(data, status) { + success: function(data, status) { equals(status, "success"); - + jQuery.ajax({ url: url, ifModified: true, - success: function(data, status) { + 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") + ok(data == null, "response body should be empty"); } start(); }, @@ -1634,11 +1670,11 @@ test("jQuery.ajax - Etag support", function() { test("jQuery ajax - failing cross-domain", function() { expect( 2 ); - + stop(); - + var i = 2; - + if ( jQuery.ajax({ url: 'http://somewebsitethatdoesnotexist-67864863574657654.com', success: function(){ ok( false , "success" ); }, @@ -1648,7 +1684,7 @@ test("jQuery ajax - failing cross-domain", function() { ok( true , "no transport" ); if ( ! --i ) start(); } - + if ( jQuery.ajax({ url: 'http://www.google.com', success: function(){ ok( false , "success" ); }, @@ -1658,20 +1694,20 @@ test("jQuery ajax - failing cross-domain", function() { ok( true , "no transport" ); if ( ! --i ) start(); } - + }); test("jQuery ajax - atom+xml", function() { stop(); - + jQuery.ajax({ url: url( 'data/atom+xml.php' ), success: function(){ ok( true , "success" ); }, error: function(){ ok( false , "error" ); }, complete: function() { start(); } }); - + }); test("jQuery.ajax - active counter", function() {