2006-11-18 13:37:01 +00:00
module ( "ajax" ) ;
2006-11-30 20:52:24 +00:00
test ( "serialize()" , function ( ) {
expect ( 1 ) ;
var data = $ ( ':input' ) . not ( 'button' ) . serialize ( ) ;
// ignore button, IE takes text content as value, not relevant for this test
ok ( data == 'action=Test&text2=Test&radio1=on&radio2=on&check=on&=on&hidden=&foo[bar]=&name=name&=foobar&select1=&select2=3&select3=1' , 'Check form serialization as query string' ) ;
} ) ;
test ( "param" , function ( ) {
expect ( 4 ) ;
var params = { foo : "bar" , baz : 42 , quux : "All your base are belong to us" } ;
ok ( $ . param ( params ) == "foo=bar&baz=42&quux=All%20your%20base%20are%20belong%20to%20us" , "simple" ) ;
params = { someName : [ 1 , 2 , 3 ] , regularThing : "blah" } ;
ok ( $ . param ( params ) == "someName=1&someName=2&someName=3®ularThing=blah" , "with array" ) ;
params = { "foo[]" : [ "baz" , 42 , "All your base are belong to us" ] } ;
ok ( $ . param ( params ) == "foo[]=baz&foo[]=42&foo[]=All%20your%20base%20are%20belong%20to%20us" , "more array" ) ;
params = { "foo[bar]" : "baz" , "foo[beep]" : 42 , "foo[quux]" : "All your base are belong to us" } ;
ok ( $ . param ( params ) == "foo[bar]=baz&foo[beep]=42&foo[quux]=All%20your%20base%20are%20belong%20to%20us" , "even more arrays" ) ;
} ) ;
2006-12-15 09:13:24 +00:00
test ( "pass-through request object" , function ( ) {
expect ( 7 ) ;
2006-12-21 15:23:59 +00:00
stop ( true ) ;
2006-12-15 09:13:24 +00:00
var count = 0 ;
var success = function ( ) {
if ( count ++ == 6 )
start ( ) ;
}
2006-12-31 15:09:07 +00:00
var target = "data/name.php" ;
ok ( $ . get ( url ( target ) , success ) , "get" ) ;
ok ( $ . getIfModified ( url ( target ) , success ) , "getIfModified" ) ;
ok ( $ . post ( url ( target ) , success ) , "post" ) ;
ok ( $ . getScript ( url ( "data/test.js" ) , success ) , "script" ) ;
ok ( $ . getJSON ( url ( "data/json.php" ) , success ) , "json" ) ;
ok ( $ . ajax ( { url : url ( target ) , success : success } ) , "generic" ) ;
2006-12-15 09:13:24 +00:00
} ) ;
test ( "synchronous request" , function ( ) {
2006-12-31 15:09:07 +00:00
ok ( /^{ "data"/ . test ( $ . ajax ( { url : url ( "data/json.php" ) , async : false } ) . responseText ) , "check returned text" ) ;
2006-12-15 09:13:24 +00:00
} ) ;
2006-12-21 12:57:22 +00:00
test ( "synchronous request with callbacks" , function ( ) {
2006-12-29 13:49:28 +00:00
expect ( 2 ) ;
2006-12-21 12:57:22 +00:00
var result ;
2006-12-31 15:09:07 +00:00
$ . ajax ( { url : url ( "data/json.php" ) , async : false , success : function ( data ) { ok ( true , "sucess callback executed" ) ; result = data ; } } ) ;
2006-12-21 12:57:22 +00:00
ok ( /^{ "data"/ . test ( result ) , "check returned text" ) ;
} ) ;
2006-11-18 13:37:01 +00:00
test ( "load(String, Object, Function) - simple: inject text into DOM" , function ( ) {
2006-11-21 09:55:34 +00:00
expect ( 2 ) ;
2006-11-18 13:37:01 +00:00
stop ( ) ;
2006-12-31 15:09:07 +00:00
$ ( '#first' ) . load ( url ( "data/name.php" ) , function ( ) {
2006-11-21 09:55:34 +00:00
ok ( /^ERROR/ . test ( $ ( '#first' ) . text ( ) ) , 'Check if content was injected into the DOM' ) ;
2006-11-18 13:37:01 +00:00
start ( ) ;
} ) ;
} ) ;
test ( "load(String, Object, Function) - inject without callback" , function ( ) {
expect ( 1 ) ;
2006-12-21 15:23:59 +00:00
stop ( true ) ; // check if load can be called with only url
2006-11-18 13:37:01 +00:00
$ ( '#first' ) . load ( "data/name.php" ) ;
} ) ;
test ( "load(String, Object, Function) - check scripts" , function ( ) {
2006-11-21 09:55:34 +00:00
expect ( 7 ) ;
2006-11-18 13:37:01 +00:00
stop ( ) ;
2006-11-21 09:55:34 +00:00
testFoo = undefined ;
2006-12-31 15:09:07 +00:00
foobar = null ;
2006-11-18 13:37:01 +00:00
var verifyEvaluation = function ( ) {
ok ( foobar == "bar" , 'Check if script src was evaluated after load' ) ;
ok ( $ ( '#ap' ) . html ( ) == 'bar' , 'Check if script evaluation has modified DOM' ) ;
start ( ) ;
} ;
2006-12-31 15:09:07 +00:00
$ ( '#first' ) . load ( url ( 'data/test.php' ) , function ( ) {
2006-11-18 13:37:01 +00:00
ok ( $ ( '#first' ) . html ( ) . match ( /^html text/ ) , 'Check content after loading html' ) ;
2006-12-31 15:44:59 +00:00
ok ( $ ( '#foo' ) . html ( ) == 'foo' , 'Check if script evaluation has modified DOM' ) ;
2006-11-21 09:55:34 +00:00
ok ( testFoo == "foo" , 'Check if script was evaluated after load' ) ;
2006-11-18 13:37:01 +00:00
setTimeout ( verifyEvaluation , 600 ) ;
} ) ;
} ) ;
2006-12-31 15:44:59 +00:00
test ( "load(String, Object, Function) - check file with only a script tag" , function ( ) {
expect ( 3 ) ;
stop ( ) ;
testFoo = undefined ;
$ ( '#first' ) . load ( url ( 'data/test2.php' ) , function ( ) {
ok ( $ ( '#foo' ) . html ( ) == 'foo' , 'Check if script evaluation has modified DOM' ) ;
ok ( testFoo == "foo" , 'Check if script was evaluated after load' ) ;
start ( ) ;
} ) ;
} ) ;
2006-11-18 13:37:01 +00:00
test ( "test global handlers - success" , function ( ) {
2006-12-11 08:53:33 +00:00
expect ( 8 ) ;
2006-11-18 13:37:01 +00:00
stop ( ) ;
2006-12-11 08:53:33 +00:00
var counter = { complete : 0 , success : 0 , error : 0 , send : 0 } ,
2006-11-18 13:37:01 +00:00
success = function ( ) { counter . success ++ } ,
error = function ( ) { counter . error ++ } ,
2006-12-11 08:53:33 +00:00
complete = function ( ) { counter . complete ++ } ,
send = function ( ) { counter . send ++ } ;
2006-11-18 13:37:01 +00:00
2006-12-11 08:53:33 +00:00
$ ( '#foo' ) . ajaxStart ( complete ) . ajaxStop ( complete ) . ajaxSend ( send ) . ajaxComplete ( complete ) . ajaxError ( error ) . ajaxSuccess ( success ) ;
2006-11-18 13:37:01 +00:00
// start with successful test
2006-12-31 15:09:07 +00:00
$ . ajax ( { url : url ( "data/name.php" ) , beforeSend : send , success : success , error : error , complete : function ( ) {
2006-11-18 13:37:01 +00:00
ok ( counter . error == 0 , 'Check succesful request' ) ;
ok ( counter . success == 2 , 'Check succesful request' ) ;
ok ( counter . complete == 3 , 'Check succesful request' ) ;
2006-12-11 08:53:33 +00:00
ok ( counter . send == 2 , 'Check succesful request' ) ;
counter . error = counter . success = counter . complete = counter . send = 0 ;
2006-11-18 13:37:01 +00:00
$ . ajaxTimeout ( 500 ) ;
2006-12-31 15:09:07 +00:00
$ . ajax ( { url : url ( "data/name.php?wait=5" ) , beforeSend : send , success : success , error : error , complete : function ( ) {
2006-11-18 13:37:01 +00:00
ok ( counter . error == 2 , 'Check failed request' ) ;
ok ( counter . success == 0 , 'Check failed request' ) ;
ok ( counter . complete == 3 , 'Check failed request' ) ;
2006-12-11 08:53:33 +00:00
ok ( counter . send == 2 , 'Check failed request' ) ;
2006-11-18 13:37:01 +00:00
start ( ) ;
} } ) ;
} } ) ;
} ) ;
test ( "test global handlers - failure" , function ( ) {
2006-12-11 08:53:33 +00:00
expect ( 8 ) ;
2006-11-18 13:37:01 +00:00
stop ( ) ;
2006-12-11 08:53:33 +00:00
var counter = { complete : 0 , success : 0 , error : 0 , send : 0 } ,
2006-11-18 13:37:01 +00:00
success = function ( ) { counter . success ++ } ,
2006-12-11 08:53:33 +00:00
error = function ( ) { counter . error ++ } ,
complete = function ( ) { counter . complete ++ } ,
send = function ( ) { counter . send ++ } ;
2006-11-18 13:37:01 +00:00
$ . ajaxTimeout ( 0 ) ;
2006-12-11 08:53:33 +00:00
$ ( '#foo' ) . ajaxStart ( complete ) . ajaxStop ( complete ) . ajaxSend ( send ) . ajaxComplete ( complete ) . ajaxError ( error ) . ajaxSuccess ( success ) ;
2006-12-31 15:09:07 +00:00
$ . ajax ( { url : url ( "data/name.php" ) , global : false , beforeSend : send , success : success , error : error , complete : function ( ) {
2006-11-18 13:37:01 +00:00
ok ( counter . error == 0 , 'Check sucesful request without globals' ) ;
ok ( counter . success == 1 , 'Check sucesful request without globals' ) ;
ok ( counter . complete == 0 , 'Check sucesful request without globals' ) ;
2006-12-11 08:53:33 +00:00
ok ( counter . send == 1 , 'Check sucesful request without globals' ) ;
counter . error = counter . success = counter . complete = counter . send = 0 ;
2006-11-18 13:37:01 +00:00
$ . ajaxTimeout ( 500 ) ;
2006-12-31 15:09:07 +00:00
$ . ajax ( { url : url ( "data/name.php?wait=5" ) , global : false , beforeSend : send , success : success , error : error , complete : function ( ) {
2006-12-22 13:56:36 +00:00
var x = counter ;
2006-11-18 13:37:01 +00:00
ok ( counter . error == 1 , 'Check failed request without globals' ) ;
ok ( counter . success == 0 , 'Check failed request without globals' ) ;
ok ( counter . complete == 0 , 'Check failed request without globals' ) ;
2006-12-11 08:53:33 +00:00
ok ( counter . send == 1 , 'Check failed request without globals' ) ;
2006-11-18 13:37:01 +00:00
start ( ) ;
} } ) ;
} } ) ;
} ) ;
test ( "$.get(String, Hash, Function) - parse xml and use text() on nodes" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
2006-12-31 15:09:07 +00:00
$ . get ( url ( 'data/dashboard.xml' ) , function ( xml ) {
2006-11-18 13:37:01 +00:00
var content = [ ] ;
$ ( 'tab' , xml ) . each ( function ( ) {
content . push ( $ ( this ) . text ( ) ) ;
} ) ;
ok ( content [ 0 ] == 'blabla' , 'Check first tab' ) ;
ok ( content [ 1 ] == 'blublu' , 'Check second tab' ) ;
start ( ) ;
} ) ;
} ) ;
test ( "$.getIfModified(String, Hash, Function)" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
2006-12-31 15:09:07 +00:00
$ . getIfModified ( url ( "data/name.php" ) , function ( msg ) {
2006-11-21 09:55:34 +00:00
ok ( /^ERROR/ . test ( msg ) , 'Check ifModified' ) ;
2006-11-18 13:37:01 +00:00
start ( ) ;
} ) ;
} ) ;
test ( "$.getScript(String, Function) - with callback" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
2006-12-31 15:09:07 +00:00
$ . getScript ( url ( "data/test.js" ) , function ( ) {
2006-11-18 13:37:01 +00:00
ok ( foobar == "bar" , 'Check if script was evaluated' ) ;
2006-11-20 20:37:28 +00:00
setTimeout ( start , 100 ) ;
2006-11-18 13:37:01 +00:00
} ) ;
} ) ;
test ( "$.getScript(String, Function) - no callback" , function ( ) {
expect ( 1 ) ;
2006-12-21 15:23:59 +00:00
stop ( true ) ;
2006-12-31 15:09:07 +00:00
$ . getScript ( url ( "data/test.js" ) ) ;
2006-11-18 13:37:01 +00:00
} ) ;
test ( "$.getJSON(String, Hash, Function) - JSON array" , function ( ) {
expect ( 4 ) ;
stop ( ) ;
2006-12-31 15:09:07 +00:00
$ . getJSON ( url ( "data/json.php" ) , { json : "array" } , function ( json ) {
2006-11-18 13:37:01 +00:00
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' ) ;
start ( ) ;
} ) ;
} ) ;
test ( "$.getJSON(String, Hash, Function) - JSON object" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
2006-12-31 15:09:07 +00:00
$ . getJSON ( url ( "data/json.php" ) , function ( json ) {
2006-11-18 13:37:01 +00:00
ok ( json . data . lang == 'en' , 'Check JSON: lang' ) ;
ok ( json . data . length == 25 , 'Check JSON: length' ) ;
start ( ) ;
} ) ;
} ) ;
test ( "$.post(String, Hash, Function) - simple with xml" , function ( ) {
expect ( 2 ) ;
stop ( ) ;
2006-12-31 15:09:07 +00:00
$ . post ( url ( "data/name.php" ) , { xml : "5-2" } , function ( xml ) {
2006-11-18 13:37:01 +00:00
$ ( 'math' , xml ) . each ( function ( ) {
ok ( $ ( 'calculation' , this ) . text ( ) == '5-2' , 'Check for XML' ) ;
ok ( $ ( 'result' , this ) . text ( ) == '3' , 'Check for XML' ) ;
} ) ;
start ( ) ;
} ) ;
} ) ;
test ( "$.ajaxTimeout(Number) - with global timeout" , function ( ) {
stop ( ) ;
var passed = 0 ;
var timeout ;
$ . ajaxTimeout ( 1000 ) ;
var pass = function ( ) {
passed ++ ;
if ( passed == 2 ) {
ok ( true , 'Check local and global callbacks after timeout' ) ;
clearTimeout ( timeout ) ;
$ ( '#main' ) . unbind ( "ajaxError" ) ;
start ( ) ;
}
} ;
var fail = function ( ) {
ok ( false , 'Check for timeout failed' ) ;
start ( ) ;
} ;
timeout = setTimeout ( fail , 1500 ) ;
$ ( '#main' ) . ajaxError ( pass ) ;
$ . ajax ( {
type : "GET" ,
2006-12-31 15:09:07 +00:00
url : url ( "data/name.php?wait=5" ) ,
2006-11-18 13:37:01 +00:00
error : pass ,
success : fail
} ) ;
2006-12-21 13:35:32 +00:00
// reset timeout
$ . ajaxTimeout ( 0 ) ;
2006-11-18 13:37:01 +00:00
} ) ;
test ( "$.ajaxTimeout(Number) with localtimeout" , function ( ) {
stop ( ) ; $ . ajaxTimeout ( 50 ) ;
$ . ajax ( {
type : "GET" ,
timeout : 5000 ,
2006-12-31 15:09:07 +00:00
url : url ( "data/name.php?wait=1" ) ,
2006-11-18 13:37:01 +00:00
error : function ( ) {
ok ( false , 'Check for local timeout failed' ) ;
start ( ) ;
} ,
success : function ( ) {
ok ( true , 'Check for local timeout' ) ;
start ( ) ;
}
} ) ;
// reset timeout
$ . ajaxTimeout ( 0 ) ;
} ) ;
test ( "$.ajax - simple get" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
$ . ajax ( {
type : "GET" ,
2006-12-31 15:09:07 +00:00
url : url ( "data/name.php?name=foo" ) ,
2006-11-18 13:37:01 +00:00
success : function ( msg ) {
ok ( msg == 'bar' , 'Check for GET' ) ;
start ( ) ;
}
} ) ;
} ) ;
test ( "$.ajax - simple post" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
$ . ajax ( {
type : "POST" ,
2006-12-31 15:09:07 +00:00
url : url ( "data/name.php" ) ,
2006-11-18 13:37:01 +00:00
data : "name=peter" ,
success : function ( msg ) {
ok ( msg == 'pan' , 'Check for POST' ) ;
start ( ) ;
}
} ) ;
} ) ;
test ( "$.ajax - dataType html" , function ( ) {
2006-11-21 09:55:34 +00:00
expect ( 5 ) ;
2006-11-18 13:37:01 +00:00
stop ( ) ;
2006-12-31 15:09:07 +00:00
foobar = null ;
2006-11-21 09:55:34 +00:00
testFoo = undefined ;
2006-11-18 13:37:01 +00:00
var verifyEvaluation = function ( ) {
ok ( foobar == "bar" , 'Check if script src was evaluated for datatype html' ) ;
start ( ) ;
} ;
$ . ajax ( {
dataType : "html" ,
2006-12-31 15:09:07 +00:00
url : url ( "data/test.php" ) ,
2006-11-18 13:37:01 +00:00
success : function ( data ) {
ok ( data . match ( /^html text/ ) , 'Check content for datatype html' ) ;
2006-11-21 09:55:34 +00:00
ok ( testFoo == "foo" , 'Check if script was evaluated for datatype html' ) ;
2006-11-18 13:37:01 +00:00
setTimeout ( verifyEvaluation , 600 ) ;
}
} ) ;
} ) ;
test ( "$.ajax - xml: non-namespace elements inside namespaced elements" , function ( ) {
expect ( 3 ) ;
stop ( ) ;
$ . ajax ( {
2006-12-31 15:09:07 +00:00
url : url ( "data/with_fries.xml" ) ,
dataType : "xml" ,
success : function ( resp ) {
2006-11-18 13:37:01 +00:00
ok ( $ ( "properties" , resp ) . length == 1 , 'properties in responseXML' ) ;
ok ( $ ( "jsconf" , resp ) . length == 1 , 'jsconf in responseXML' ) ;
ok ( $ ( "thing" , resp ) . length == 2 , 'things in responseXML' ) ;
start ( ) ;
}
} ) ;
2006-12-04 19:37:49 +00:00
} ) ;
2006-12-11 08:53:33 +00:00
test ( "$.ajax - beforeSend" , function ( ) {
2006-12-04 19:37:49 +00:00
expect ( 1 ) ;
stop ( ) ;
2006-12-21 15:23:59 +00:00
var check = false ;
2006-12-04 19:37:49 +00:00
$ . ajax ( {
2006-12-31 15:09:07 +00:00
url : url ( "data/name.php" ) ,
2006-12-04 19:37:49 +00:00
data : { 'req' : true } ,
2006-12-05 22:58:27 +00:00
beforeSend : function ( xml ) {
2006-12-21 15:23:59 +00:00
check = true
2006-12-04 19:37:49 +00:00
} ,
success : function ( data ) {
2006-12-21 15:23:59 +00:00
ok ( check , "check beforeSend was executed" ) ;
2006-12-04 19:37:49 +00:00
start ( ) ;
}
} ) ;
2006-12-22 13:56:36 +00:00
} ) ;
test ( "ajaxSetup()" , function ( ) {
expect ( 1 ) ;
stop ( ) ;
$ . ajaxSetup ( {
2006-12-31 15:09:07 +00:00
url : url ( "data/name.php?name=foo" ) ,
2006-12-22 13:56:36 +00:00
success : function ( msg ) {
ok ( msg == 'bar' , 'Check for GET' ) ;
start ( ) ;
}
} ) ;
$ . ajax ( ) ;
} ) ;