X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fajax.js;h=85430eb82be70b7f40dbe018cde1803756ac0b07;hb=f7ed2aca562620f9424b1667170352e798e99ef3;hp=87430c93a28cede36a018269531875d5bac5a927;hpb=ab3ba4a81252c4357a7aab5f24d765d41d47986e;p=jquery.git diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 87430c9..85430eb 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -74,7 +74,7 @@ test("jQuery.ajax() - success/error callbacks (remote)", function() { var supports = jQuery.support.cors; - expect( supports ? 9 : 6 ); + expect( supports ? 9 : 4 ); jQuery.ajaxSetup({ timeout: 0 }); @@ -102,8 +102,8 @@ test("jQuery.ajax() - success/error callbacks (remote)", function() { dataType: "text", beforeSend: function(){ ok(supports, "beforeSend"); }, success: function( val ){ ok(supports, "success"); ok(supports && val.length, "data received"); }, - error: function(_ , a , b ){ ok(!supports, "error"); }, - complete: function(){ ok(true, "complete"); } + error: function(_ , a , b ){ ok(false, "error"); }, + complete: function(){ ok(supports, "complete"); } }); }, 13); }); @@ -280,28 +280,38 @@ test("jQuery.ajax() - error callbacks", function() { test(".ajax() - headers" , function() { - // No multiple line headers in IE - expect( jQuery.browser.msie ? 2 : 4 ); + expect( 2 ); stop(); - jQuery.ajax({ - url: url("data/headers.php"), - success: function( _1 , _2 , xhr ){ - ok(true, "success"); - equals( xhr.getResponseHeader( "Single-Line" ) , "Hello World" , "Single line header" ); - // No multiple line headers in IE - if ( ! jQuery.browser.msie ) { - // Each browser has its own unique way to deal with spaces after line breaks - // in multiple line headers, so we use regular expressions - ok( /^Hello\s+World$/.test( xhr.getResponseHeader( "Multiple-Line" ) ) , "Multiple line" ); - ok( /^Hello\s+Beautiful\s+World$/.test( xhr.getResponseHeader( "Multiple-Multiple-Line" ) ) , "Multiple multiple line" ); + var requestHeaders = { + siMPle: "value", + "SometHing-elsE": "other value", + OthEr: "something else" + }, + list = [], + i; + + for( i in requestHeaders ) { + list.push( i ); + } + + jQuery.ajax(url("data/headers.php?keys="+list.join( "_" ) ), { + headers: requestHeaders, + success: function( data , _ , xhr ) { + var tmp = []; + for ( i in requestHeaders ) { + 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() - hash", function() { @@ -399,136 +409,6 @@ test("jQuery.ajax() - abort", function() { equals( xhr.readyState, 0, "XHR readyState indicates successful abortion" ); }); -test("jQuery.ajax() - readyState (success)", function() { - expect( 1 ); - - jQuery.ajaxSetup({ timeout: 0 }); - - stop(); - - var control = ""; - - setTimeout(function(){ - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function( xhr ) { - xhr.onreadystatechange = function() { - control += xhr.readyState; - } - }, - complete: function(){ - setTimeout( function() { - equals( control , "1234" , "onreadystatechange was properly called" ); - }, 13 ); - start(); - } - }); - }, 13); -}); - -test("jQuery.ajax() - readyState (abort)", function() { - expect( 2 ); - - jQuery.ajaxSetup({ timeout: 0 }); - - stop(); - - var control = ""; - - setTimeout(function(){ - - jQuery.ajaxSetup({ timeout: 500 }); - - jQuery.ajax({ - url: url("data/name.php?wait=5"), - beforeSend: function( xhr ) { - xhr.onreadystatechange = function() { - control += xhr.readyState; - } - }, - complete: function( xhr ){ - setTimeout( function() { - equals( control , "14" , "onreadystatechange was properly called" ); - equals( xhr.readyState, 0 , "readyState is 0" ); - }, 13 ); - start(); - } - }); - }, 13); -}); - -test("jQuery.xhr() - reuse", function() { - expect( 15 ); - - jQuery.ajaxSetup({ timeout: 0 }); - - stop(); - - var number = 0; - - setTimeout(function(){ - jQuery('#foo').ajaxStart(function(){ - ok( true, "ajaxStart" ); - }).ajaxStop(function(){ - ok( true, "ajaxStop" ); - start(); - }).ajaxSend(function(){ - number++; - ok( true, "ajaxSend (" + number +")" ); - }).ajaxComplete(function(){ - ok( true, "ajaxComplete (" + number +")" ); - }).ajaxError(function(){ - ok( false, "ajaxError (" + number +")" ); - }).ajaxSuccess(function(){ - ok( true, "ajaxSuccess (" + number +")" ); - }); - - jQuery.ajax({ - url: url("data/name.html"), - beforeSend: function(){ ok(true, "beforeSend (1)"); }, - success: function( _1 , _2 , xhr ){ - ok(true, "success (1)"); - xhr.complete(function() { - ok(true, "complete (1bis)"); - }); - xhr.open( "GET", url("data/name.html") ); - xhr.success( function(){ ok(true, "beforeSend (2)"); } ) - xhr.send( null, { - success: function(){ ok(true, "success (2)"); }, - error: function(){ ok(false, "error (2)"); }, - complete: function(){ ok(true, "complete (2)"); } - } ); - }, - error: function(){ ok(false, "error (1)"); }, - complete: function(){ ok(true, "complete (1)"); } - }); - }, 13); -}); - -test("jQuery.xhr() - early binding", function() { - expect( 2 ); - - jQuery.ajaxSetup({ timeout: 0 }); - - stop(); - - jQuery.xhr() - .success( function(){ ok(true, "success"); } ) - .error( function(){ ok(false, "error"); } ) - .complete( function(){ ok(true, "complete"); start(); } ) - .open( "GET", url("data/name.html") ) - .send(); -}); - -test("jQuery.xhr() - get native implementation", function() { - - var xhr = jQuery.xhr(true); - - ok( xhr.readyState !== undefined , "implements XMLHttpRequest" ); - ok( ! jQuery.isFunction( xhr.success ) , "is not jQuery's abstraction" ); - -}); - test("Ajax events with context", function() { expect(14); @@ -643,34 +523,6 @@ test("jQuery.ajax() - disabled globals", function() { }); }); -test("jQuery.xhr() - disabled globals through xhr.send(data , false)", function() { - expect( 2 ); - stop(); - - jQuery('#foo').ajaxStart(function(){ - ok( false, "ajaxStart" ); - }).ajaxStop(function(){ - ok( false, "ajaxStop" ); - }).ajaxSend(function(){ - ok( false, "ajaxSend" ); - }).ajaxComplete(function(){ - ok( false, "ajaxComplete" ); - }).ajaxError(function(){ - ok( false, "ajaxError" ); - }).ajaxSuccess(function(){ - ok( false, "ajaxSuccess" ); - }); - - jQuery.xhr() - .success(function(){ ok(true, "success"); }) - .error(function(){ ok(false, "error"); }) - .complete(function(){ - ok(true, "complete"); - setTimeout(function(){ start(); }, 13); - }) - .open("GET", url("data/name.html")).send(undefined, false); -}); - test("jQuery.ajax - xml: non-namespace elements inside namespaced elements", function() { expect(3); stop(); @@ -697,6 +549,10 @@ test("jQuery.ajax - xml: non-namespace elements inside namespaced elements (over equals( jQuery("jsconf", resp).length, 1, 'jsconf in responseXML' ); equals( jQuery("thing", resp).length, 2, 'things in responseXML' ); start(); + }, + error: function(_1,_2,error) { + ok( false, error ); + start(); } }); }); @@ -1477,7 +1333,7 @@ test("jQuery.ajax() - json by content-type disabled with options", function() { }, success: function( text ) { equals( typeof text , "string" , "json wasn't auto-determined" ); - var json = this.dataConverters["text => json"]( text ); + var json = this.dataConverters["text json"]( text ); ok( json.length >= 2, "Check length"); equals( json[0].name, 'John', 'Check JSON: first, name' ); equals( json[0].age, 21, 'Check JSON: first, age' ); @@ -1813,23 +1669,6 @@ test("jQuery.ajax - Etag support", function() { }); }); -test("jQuery ajax - headers", function() { - - stop(); - - jQuery.ajax(url("data/css.php?wait=1&id=headers"), { - headers: { - testKey: "testValue" - }, - beforeSend: function( xhr ) { - equals( xhr.getRequestHeader("testKey") , "testValue" , "Headers properly set" ); - setTimeout( start , 13 ); - return false; - } - }); - -}); - test("jQuery ajax - failing cross-domain", function() { expect( 2 ); @@ -1874,7 +1713,7 @@ test("jQuery.ajax - active counter", function() { test( "jQuery.ajax - Location object as url (#7531)", 1, function () { var success = false; try { - var xhr = jQuery.ajax({ url: document.location }); + var xhr = jQuery.ajax({ url: window.location }); success = true; xhr.abort(); } catch (e) {}