Makes sure all converters keys are lowercased before any conversion is taking place...
[jquery.git] / test / unit / ajax.js
index 5e21721..9d088f3 100644 (file)
@@ -242,7 +242,7 @@ test("jQuery.ajax() - error callbacks", function() {
 
 test("jQuery.ajax() - textStatus and errorThrown values", function() {
 
-       var nb = 3;
+       var nb = 2;
 
        expect( 2 * nb );
        stop();
@@ -253,6 +253,11 @@ test("jQuery.ajax() - textStatus and errorThrown values", function() {
                }
        }
 
+       /*
+       Safari 3.x returns "OK" instead of "Not Found"
+       Safari 4.x doesn't have this issue so the test should be re-instated once
+       we drop support for 3.x
+
        jQuery.ajax({
                url: url("data/nonExistingURL"),
                error: function( _ , textStatus , errorThrown ){
@@ -261,6 +266,7 @@ test("jQuery.ajax() - textStatus and errorThrown values", function() {
                        startN();
                }
        });
+       */
 
        jQuery.ajax({
                url: url("data/name.php?wait=5"),
@@ -909,7 +915,7 @@ test("serialize()", function() {
 });
 
 test("jQuery.param()", function() {
-       expect(22);
+       expect(23);
 
        equals( !jQuery.ajaxSettings.traditional, true, "traditional flag, falsy by default" );
 
@@ -972,6 +978,9 @@ test("jQuery.param()", function() {
 
        params = { param1: null };
        equals( jQuery.param(params,false), "param1=null", "Make sure that null params aren't traversed." );
+
+       params = {'test': {'length': 3, 'foo': 'bar'} };
+       equals( jQuery.param( params, false ), "test%5Blength%5D=3&test%5Bfoo%5D=bar", "Sub-object with a length property" );
 });
 
 test("synchronous request", function() {
@@ -1630,17 +1639,32 @@ test("jQuery.getJSON(String, Function) - JSON object with absolute url to local
        });
 });
 
-test("jQuery.post - data", function() {
-       expect(2);
+test("jQuery.post - data", 3, function() {
        stop();
 
-       jQuery.post(url("data/name.php"), {xml: "5-2", length: 3}, function(xml){
-               jQuery('math', xml).each(function() {
-                       equals( jQuery('calculation', this).text(), '5-2', 'Check for XML' );
-                       equals( jQuery('result', this).text(), '3', 'Check for XML' );
-               });
-               start();
-       });
+       jQuery.when(
+               jQuery.post( url( "data/name.php" ), { xml: "5-2", length: 3 }, function( xml ) {
+                       jQuery( 'math', xml ).each( function() {
+                               equals( jQuery( 'calculation', this ).text(), '5-2', 'Check for XML' );
+                               equals( jQuery( 'result', this ).text(), '3', 'Check for XML' );
+                       })
+               }),
+
+               jQuery.ajax({
+                       url: url('data/echoData.php'),
+                       type: "POST",
+                       data: {
+                               'test': {
+                                       'length': 7,
+                                               'foo': 'bar'
+                               }
+                       },
+                       success: function( data ) {
+                               strictEqual( data, 'test%5Blength%5D=7&test%5Bfoo%5D=bar', 'Check if a sub-object with a length param is serialized correctly');
+                       }
+               })
+       ).then( start, start );
+
 });
 
 test("jQuery.post(String, Hash, Function) - simple with xml", function() {
@@ -2053,12 +2077,12 @@ test("jQuery.ajax - transitive conversions", function() {
 
                jQuery.ajax( url("data/json.php") , {
                        converters: {
-                               "json myjson": function( data ) {
+                               "json myJson": function( data ) {
                                        ok( true , "converter called" );
                                        return data;
                                }
                        },
-                       dataType: "myjson",
+                       dataType: "myJson",
                        success: function() {
                                ok( true , "Transitive conversion worked" );
                                strictEqual( this.dataTypes[0] , "text" , "response was retrieved as text" );
@@ -2068,13 +2092,13 @@ test("jQuery.ajax - transitive conversions", function() {
 
                jQuery.ajax( url("data/json.php") , {
                        converters: {
-                               "json myjson": function( data ) {
+                               "json myJson": function( data ) {
                                        ok( true , "converter called (*)" );
                                        return data;
                                }
                        },
                        contents: false, /* headers are wrong so we ignore them */
-                       dataType: "* myjson",
+                       dataType: "* myJson",
                        success: function() {
                                ok( true , "Transitive conversion worked (*)" );
                                strictEqual( this.dataTypes[0] , "text" , "response was retrieved as text (*)" );