Remove an invalid ajax test and some code that is no longer used by any test.
[jquery.git] / test / unit / ajax.js
index 33f2782..c2d5729 100644 (file)
@@ -240,6 +240,21 @@ test("jQuery.ajax() - error callbacks", function() {
        });
 });
 
+test( "jQuery.ajax - multiple method signatures introduced in 1.5 ( #8107)", function() {
+
+       expect( 4 );
+
+       stop();
+
+       jQuery.when(
+               jQuery.ajax().success(function() { ok( true, 'With no arguments' ); }),
+               jQuery.ajax('data/name.html').success(function() { ok( true, 'With only string URL argument' ); }),
+               jQuery.ajax('data/name.html', {} ).success(function() { ok( true, 'With string URL param and map' ); }),
+               jQuery.ajax({ url: 'data/name.html'} ).success(function() { ok( true, 'With only map' ); })
+       ).then( start, start );
+
+});
+
 test("jQuery.ajax() - textStatus and errorThrown values", function() {
 
        var nb = 2;
@@ -296,7 +311,7 @@ test("jQuery.ajax() - responseText on error", function() {
        jQuery.ajax({
                url: url("data/errorWithText.php"),
                error: function(xhr) {
-                       strictEqual( xhr.responseText , "plain text message" , "Test jXHR.responseText is filled for HTTP errors" );
+                       strictEqual( xhr.responseText , "plain text message" , "Test jqXHR.responseText is filled for HTTP errors" );
                },
                complete: function() {
                        start();
@@ -509,21 +524,6 @@ test("jQuery ajax - cross-domain detection", function() {
 
 });
 
-test(".ajax() - 304", function() {
-       expect( 1 );
-       stop();
-
-       jQuery.ajax({
-               url: url("data/notmodified.php"),
-               success: function(){ ok(true, "304 ok"); },
-               // Do this because opera simply refuses to implement 304 handling :(
-               // A feature-driven way of detecting this would be appreciated
-               // See: http://gist.github.com/599419
-               error: function(){ ok(jQuery.browser.opera, "304 not ok "); },
-               complete: function(xhr){ start(); }
-       });
-});
-
 test(".load()) - 404 error callbacks", function() {
        expect( 6 );
        stop();
@@ -915,7 +915,7 @@ test("serialize()", function() {
 });
 
 test("jQuery.param()", function() {
-       expect(23);
+       expect(25);
 
        equals( !jQuery.ajaxSettings.traditional, true, "traditional flag, falsy by default" );
 
@@ -950,6 +950,11 @@ test("jQuery.param()", function() {
        equals( jQuery.param({"foo": {"bar": [], foo: 1} }), "foo%5Bbar%5D=&foo%5Bfoo%5D=1", "Empty array param" );
        equals( jQuery.param({"foo": {"bar": {}} }), "foo%5Bbar%5D=", "Empty object param" );
 
+       // #7945
+       equals( jQuery.param({"jquery": "1.4.2"}), "jquery=1.4.2", "Check that object with a jQuery property get serialized correctly" );
+
+       equals( jQuery.param(jQuery("#form :input")), "action=Test&text2=Test&radio1=on&radio2=on&check=on&=on&hidden=&foo%5Bbar%5D=&name=name&search=search&button=&=foobar&select1=&select2=3&select3=1&select4=1&select5=3", "Make sure jQuery objects are properly serialized");
+
        jQuery.ajaxSetup({ traditional: true });
 
        var params = {foo:"bar", baz:42, quux:"All your base are belong to us"};
@@ -1203,9 +1208,9 @@ test("jQuery.get(String, Hash, Function) - parse xml and use text() on nodes", f
 test("jQuery.getScript(String, Function) - with callback", function() {
        expect(3);
        stop();
-       jQuery.getScript(url("data/test.js"), function( data, _, jXHR ) {
+       jQuery.getScript(url("data/test.js"), function( data, _, jqXHR ) {
                equals( foobar, "bar", 'Check if script was evaluated' );
-               strictEqual( data, jXHR.responseText, "Same-domain script requests returns the source of the script (#8082)" );
+               strictEqual( data, jqXHR.responseText, "Same-domain script requests returns the source of the script (#8082)" );
                setTimeout(start, 100);
        });
 });
@@ -1379,8 +1384,8 @@ jQuery.each( [ "Same Domain", "Cross Domain" ] , function( crossDomain , label )
                                        dataType: "jsonp",
                                        crossDomain: crossDomain,
                                        jsonpCallback: "functionToCleanUp",
-                                       beforeSend: function( jXHR ) {
-                                               xhr = jXHR;
+                                       beforeSend: function( jqXHR ) {
+                                               xhr = jqXHR;
                                                return false;
                                        }
                                });
@@ -1867,96 +1872,105 @@ test("data option: empty bodies for non-GET requests", function() {
        });
 });
 
-test("jQuery.ajax - If-Modified-Since support", function() {
-       expect( 3 );
+var ifModifiedNow = new Date();
 
-       stop();
+jQuery.each( { " (cache)": true, " (no cache)": false }, function( label, cache ) {
 
-       var url = "data/if_modified_since.php?ts=" + new Date();
+       test("jQuery.ajax - If-Modified-Since support" + label, function() {
+               expect( 3 );
 
-       jQuery.ajax({
-               url: url,
-               ifModified: true,
-               success: function(data, status) {
-                       equals(status, "success");
+               stop();
 
-                       jQuery.ajax({
-                               url: url,
-                               ifModified: true,
-                               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");
+               var url = "data/if_modified_since.php?ts=" + ifModifiedNow++;
+
+               jQuery.ajax({
+                       url: url,
+                       ifModified: true,
+                       cache: cache,
+                       success: function(data, status) {
+                               equals(status, "success" );
+
+                               jQuery.ajax({
+                                       url: url,
+                                       ifModified: true,
+                                       cache: cache,
+                                       success: function(data, status) {
+                                               if ( data === "FAIL" ) {
+                                                       ok(jQuery.browser.opera, "Opera is incapable of doing .setRequestHeader('If-Modified-Since').");
+                                                       ok(jQuery.browser.opera, "Opera is incapable of doing .setRequestHeader('If-Modified-Since').");
+                                               } else {
+                                                       equals(status, "notmodified");
+                                                       ok(data == null, "response body should be empty");
+                                               }
+                                               start();
+                               },
+                                       error: function() {
+                                               // Do this because opera simply refuses to implement 304 handling :(
+                                               // A feature-driven way of detecting this would be appreciated
+                                               // See: http://gist.github.com/599419
+                                               ok(jQuery.browser.opera, "error");
+                                               ok(jQuery.browser.opera, "error");
+                                               start();
                                        }
-                                       start();
-                       },
-                               error: function() {
-                                       // Do this because opera simply refuses to implement 304 handling :(
-                                       // A feature-driven way of detecting this would be appreciated
-                                       // See: http://gist.github.com/599419
-                                       ok(jQuery.browser.opera, "error");
-                                       ok(jQuery.browser.opera, "error");
-                                       start();
-                       }
-                       });
-               },
-               error: function() {
-                       equals(false, "error");
-                       // Do this because opera simply refuses to implement 304 handling :(
-                       // A feature-driven way of detecting this would be appreciated
-                       // See: http://gist.github.com/599419
-                       ok(jQuery.browser.opera, "error");
-                       start();
-               }
+                               });
+                       },
+                       error: function() {
+                               equals(false, "error");
+                               // Do this because opera simply refuses to implement 304 handling :(
+                               // A feature-driven way of detecting this would be appreciated
+                               // See: http://gist.github.com/599419
+                               ok(jQuery.browser.opera, "error");
+                               start();
+                       }
+               });
        });
-});
 
-test("jQuery.ajax - Etag support", function() {
-       expect( 3 );
+       test("jQuery.ajax - Etag support" + label, function() {
+               expect( 3 );
 
-       stop();
+               stop();
 
-       var url = "data/etag.php?ts=" + new Date();
+               var url = "data/etag.php?ts=" + ifModifiedNow++;
 
-       jQuery.ajax({
-               url: url,
-               ifModified: true,
-               success: function(data, status) {
-                       equals(status, "success");
+               jQuery.ajax({
+                       url: url,
+                       ifModified: true,
+                       cache: cache,
+                       success: function(data, status) {
+                               equals(status, "success" );
 
-                       jQuery.ajax({
-                               url: url,
-                               ifModified: true,
-                               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");
+                               jQuery.ajax({
+                                       url: url,
+                                       ifModified: true,
+                                       cache: cache,
+                                       success: function(data, status) {
+                                               if ( data === "FAIL" ) {
+                                                       ok(jQuery.browser.opera, "Opera is incapable of doing .setRequestHeader('If-None-Match').");
+                                                       ok(jQuery.browser.opera, "Opera is incapable of doing .setRequestHeader('If-None-Match').");
+                                               } else {
+                                                       equals(status, "notmodified");
+                                                       ok(data == null, "response body should be empty");
+                                               }
+                                               start();
+                               },
+                               error: function() {
+                                               // Do this because opera simply refuses to implement 304 handling :(
+                                               // A feature-driven way of detecting this would be appreciated
+                                               // See: http://gist.github.com/599419
+                                               ok(jQuery.browser.opera, "error");
+                                               ok(jQuery.browser.opera, "error");
+                                               start();
                                        }
-                                       start();
-                       },
-                       error: function() {
-                                       // Do this because opera simply refuses to implement 304 handling :(
-                                       // A feature-driven way of detecting this would be appreciated
-                                       // See: http://gist.github.com/599419
-                                       ok(jQuery.browser.opera, "error");
-                                       ok(jQuery.browser.opera, "error");
-                                       start();
-                               }
-                       });
-               },
-               error: function() {
-                       // Do this because opera simply refuses to implement 304 handling :(
-                       // A feature-driven way of detecting this would be appreciated
-                       // See: http://gist.github.com/599419
-                       ok(jQuery.browser.opera, "error");
-                       start();
-               }
+                               });
+                       },
+                       error: function() {
+                               // Do this because opera simply refuses to implement 304 handling :(
+                               // A feature-driven way of detecting this would be appreciated
+                               // See: http://gist.github.com/599419
+                               ok(jQuery.browser.opera, "error");
+                               start();
+                       }
+               });
        });
 });
 
@@ -2048,16 +2062,16 @@ test( "jQuery.ajax - statusCode" , function() {
                }).statusCode( createStatusCodes( "immediately with method" , isSuccess ) );
 
                jQuery.ajax( url( uri ) , {
-                       complete: function(jXHR) {
-                               jXHR.statusCode( createStatusCodes( "on complete" , isSuccess ) );
+                       complete: function(jqXHR) {
+                               jqXHR.statusCode( createStatusCodes( "on complete" , isSuccess ) );
                                countComplete();
                        }
                });
 
                jQuery.ajax( url( uri ) , {
-                       complete: function(jXHR) {
+                       complete: function(jqXHR) {
                                setTimeout( function() {
-                                       jXHR.statusCode( createStatusCodes( "very late binding" , isSuccess ) );
+                                       jqXHR.statusCode( createStatusCodes( "very late binding" , isSuccess ) );
                                        countComplete();
                                } , 100 );
                        }
@@ -2065,10 +2079,10 @@ test( "jQuery.ajax - statusCode" , function() {
 
                jQuery.ajax( url( uri ) , {
                        statusCode: createStatusCodes( "all (options)" , isSuccess ),
-                       complete: function(jXHR) {
-                               jXHR.statusCode( createStatusCodes( "all (on complete)" , isSuccess ) );
+                       complete: function(jqXHR) {
+                               jqXHR.statusCode( createStatusCodes( "all (on complete)" , isSuccess ) );
                                setTimeout( function() {
-                                       jXHR.statusCode( createStatusCodes( "all (very late binding)" , isSuccess ) );
+                                       jqXHR.statusCode( createStatusCodes( "all (very late binding)" , isSuccess ) );
                                        countComplete();
                                } , 100 );
                        }
@@ -2077,22 +2091,22 @@ test( "jQuery.ajax - statusCode" , function() {
                var testString = "";
 
                jQuery.ajax( url( uri ), {
-                       success: function( a , b , jXHR ) {
+                       success: function( a , b , jqXHR ) {
                                ok( isSuccess , "success" );
                                var statusCode = {};
-                               statusCode[ jXHR.status ] = function() {
+                               statusCode[ jqXHR.status ] = function() {
                                        testString += "B";
                                };
-                               jXHR.statusCode( statusCode );
+                               jqXHR.statusCode( statusCode );
                                testString += "A";
                        },
-                       error: function( jXHR ) {
+                       error: function( jqXHR ) {
                                ok( ! isSuccess , "error" );
                                var statusCode = {};
-                               statusCode[ jXHR.status ] = function() {
+                               statusCode[ jqXHR.status ] = function() {
                                        testString += "B";
                                };
-                               jXHR.statusCode( statusCode );
+                               jqXHR.statusCode( statusCode );
                                testString += "A";
                        },
                        complete: function() {
@@ -2148,6 +2162,25 @@ test("jQuery.ajax - transitive conversions", function() {
 
 });
 
+test("jQuery.ajax - abort in prefilter", function() {
+
+       expect( 1 );
+
+       jQuery.ajaxPrefilter(function( options, _, jqXHR ) {
+               if ( options.abortInPrefilter ) {
+                       jqXHR.abort();
+               }
+       });
+
+       strictEqual( jQuery.ajax({
+               abortInPrefilter: true,
+               error: function() {
+                       ok( false, "error callback called" );
+               }
+       }), false, "Request was properly aborted early by the prefilter" );
+
+});
+
 test("jQuery.ajax - active counter", function() {
     ok( jQuery.active == 0, "ajax active counter should be zero: " + jQuery.active );
 });