Make sure that we don't try to double-encode params using the traditional style....
[jquery.git] / test / unit / ajax.js
index 775523e..4a823ac 100644 (file)
@@ -180,6 +180,27 @@ test("Ajax events with context", function() {
        });
 });
 
+test("jQuery.ajax context modification", function() {
+       expect(1);
+
+       stop();
+
+       var obj = {}
+
+       jQuery.ajax({
+               url: url("data/name.html"),
+               context: obj,
+               beforeSend: function(){
+                       this.test = "foo";
+               },
+               complete: function() {
+                       start();
+               }
+       });
+
+       equals( obj.test, "foo", "Make sure the original object is maintained." );
+});
+
 test("jQuery.ajax() - disabled globals", function() {
        expect( 3 );
        stop();
@@ -330,9 +351,9 @@ test("serialize()", function() {
 });
 
 test("jQuery.param()", function() {
-       expect(18);
+       expect(19);
        
-  equals( !jQuery.ajaxSettings.traditional, true, "traditional flag, falsy by default" );
+       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" );
@@ -357,6 +378,8 @@ test("jQuery.param()", function() {
        
        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" );
+
+       equals( decodeURIComponent( jQuery.param({ "test[]": [0, 1, 2] }) ), "test[]=0&test[]=1&test[]=2", "Make sure params are double-encoded." );
        
        jQuery.ajaxSetup({ traditional: true });
        
@@ -871,7 +894,7 @@ test("jQuery.ajax() - script, Remote with scheme-less URL", function() {
 });
 
 test("jQuery.ajax() - malformed JSON", function() {
-       expect(1);
+       expect(2);
 
        stop();
 
@@ -882,8 +905,9 @@ test("jQuery.ajax() - malformed JSON", function() {
                        ok( false, "Success." );
                        start();
                },
-               error: function(xhr, msg) {
+               error: function(xhr, msg, detailedMsg) {
                        equals( "parsererror", msg, "A parse error occurred." );
+                       ok( /^Invalid JSON/.test(detailedMsg), "Detailed parsererror message provided" );
                        start();
                }
        });