X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fajax.js;h=39d34093bf9ec5e7e46cb3bd94810d8cc90fe868;hb=5dc6b7ce3469eaadb37a151d449e8d36571d1894;hp=564f692670bea15b6c1642129e11247c0021c110;hpb=cf8c1249d1efbdaf4f4dd8d1a36bb803335f4ee8;p=jquery.git
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index 564f692..39d3409 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -74,7 +74,7 @@ test("Ajax events with context", function() {
expect(6);
stop();
- var context = {};
+ var context = document.createElement("div");
function event(e){
equals( this, context, e.type );
@@ -223,12 +223,18 @@ test("jQuery.ajax - dataType html", function() {
test("serialize()", function() {
expect(5);
+ // Add html5 elements only for serialize because selector can't yet find them on non-html5 browsers
+ jQuery("#search").after(
+ ''+
+ ''
+ );
+
equals( jQuery('#form').serialize(),
- "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&select1=&select2=3&select3=1&select3=2",
+ "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2",
'Check form serialization as query string');
equals( jQuery('#form :input').serialize(),
- "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&select1=&select2=3&select3=1&select3=2",
+ "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2",
'Check input serialization as query string');
equals( jQuery('#testForm').serialize(),
@@ -240,18 +246,45 @@ test("serialize()", function() {
'Check input serialization as query string');
equals( jQuery('#form, #testForm').serialize(),
- "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&select1=&select2=3&select3=1&select3=2&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=",
+ "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=",
'Multiple form serialization as query string');
/* Temporarily disabled. Opera 10 has problems with form serialization.
equals( jQuery('#form, #testForm :input').serialize(),
- "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&select1=&select2=3&select3=1&select3=2&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=",
+ "action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=",
'Mixed form/input serialization as query string');
*/
+ jQuery("#html5email, #html5number").remove();
});
test("jQuery.param()", function() {
- expect(8);
+ expect(15);
+
+ equals( jQuery.param.traditional, undefined, "traditional flag, undefined 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" );
+
+ params = {someName: [1, 2, 3], regularThing: "blah" };
+ equals( jQuery.param(params), "someName%5B%5D=1&someName%5B%5D=2&someName%5B%5D=3®ularThing=blah", "with array" );
+
+ params = {foo: ['a', 'b', 'c']};
+ equals( jQuery.param(params), "foo%5B%5D=a&foo%5B%5D=b&foo%5B%5D=c", "with array of strings" );
+
+ params = {foo: ["baz", 42, "All your base are belong to us"] };
+ equals( jQuery.param(params), "foo%5B%5D=baz&foo%5B%5D=42&foo%5B%5D=All+your+base+are+belong+to+us", "more array" );
+
+ params = {foo: { bar: 'baz', beep: 42, quux: 'All your base are belong to us' } };
+ equals( jQuery.param(params), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All+your+base+are+belong+to+us", "even more arrays" );
+
+ 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( decodeURIComponent( jQuery.param(params) ), "a[]=1&a[]=2&b[c]=3&b[d][]=4&b[d][]=5&b[e][x][]=6&b[e][y]=7&b[e][z][]=8&b[e][z][]=9&b[f]=true&b[g]=false&b[h]=undefined&i[]=10&i[]=11&j=true&k=false&l[]=undefined&l[]=0&m=cowboy+hat?", "huge structure" );
+
+ params = { a: [ 0, [ 1, 2 ], [ 3, [ 4, 5 ], [ 6 ] ], { b: [ 7, [ 8, 9 ], [ { c: 10, d: 11 } ], [ [ 12 ] ], [ [ [ 13 ] ] ], { e: { f: { g: [ 14, [ 15 ] ] } } }, 16 ] }, 17 ] };
+ equals( decodeURIComponent( jQuery.param(params) ), "a[]=0&a[1][]=1&a[1][]=2&a[2][]=3&a[2][1][]=4&a[2][1][]=5&a[2][2][]=6&a[3][b][]=7&a[3][b][1][]=8&a[3][b][1][]=9&a[3][b][2][0][c]=10&a[3][b][2][0][d]=11&a[3][b][3][0][]=12&a[3][b][4][0][0][]=13&a[3][b][5][e][f][g][]=14&a[3][b][5][e][f][g][1][]=15&a[3][b][]=16&a[]=17", "nested arrays" );
+
+ jQuery.param.traditional = true;
+
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" );
@@ -266,15 +299,12 @@ test("jQuery.param()", function() {
params = {"foo[bar]":"baz", "foo[beep]":42, "foo[quux]":"All your base are belong to us"};
equals( jQuery.param(params), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All+your+base+are+belong+to+us", "even more arrays" );
-
- params = {foo: {bar: "baz", beep: 42, quux: "All your base are belong to us"}};
- equals( jQuery.param(params), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All+your+base+are+belong+to+us", "nested object" );
-
- params = {foo: {"bar[]": [1,2,3]}};
- equals( jQuery.param(params), "foo%5Bbar%5D%5B%5D=1&foo%5Bbar%5D%5B%5D=2&foo%5Bbar%5D%5B%5D=3", "nested array");
-
- params = {foo: [{bar: "baz", beep: 42}, {bar: "baz2", beep: 43}]};
- equals( jQuery.param(params), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bbar%5D=baz2&foo%5Bbeep%5D=43", "nested array of objects" );
+
+ 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), "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" );
+
+ params = { a: [ 0, [ 1, 2 ], [ 3, [ 4, 5 ], [ 6 ] ], { b: [ 7, [ 8, 9 ], [ { c: 10, d: 11 } ], [ [ 12 ] ], [ [ [ 13 ] ] ], { e: { f: { g: [ 14, [ 15 ] ] } } }, 16 ] }, 17 ] };
+ equals( jQuery.param(params), "a=0&a=1%2C2&a=3%2C4%2C5%2C6&a=%5Bobject+Object%5D&a=17", "nested arrays (not possible when jQuery.param.traditional == true)" );
});
@@ -351,6 +381,10 @@ test("ajax cache", function () {
ok( jQuery.ajax({url: "data/text.php?name=David&_=tobereplaced555&washere=true", cache:false}), "test with 2 parameters surrounding _= one" );
});
+/*
+ * Test disabled.
+ * The assertions expect that the passed-in object will be modified,
+ * which shouldn't be the case. Fixes #5439.
test("global ajaxSettings", function() {
expect(2);
@@ -372,6 +406,7 @@ test("global ajaxSettings", function() {
jQuery.ajaxSettings = tmp;
});
+*/
test("load(String)", function() {
expect(1);
@@ -496,10 +531,10 @@ test("jQuery.getScript(String, Function) - no callback", function() {
});
test("jQuery.ajax() - JSONP, Local", function() {
- expect(7);
+ expect(8);
var count = 0;
- function plus(){ if ( ++count == 7 ) start(); }
+ function plus(){ if ( ++count == 8 ) start(); }
stop();
@@ -558,6 +593,20 @@ test("jQuery.ajax() - JSONP, Local", function() {
});
jQuery.ajax({
+ url: "data/jsonp.php",
+ dataType: "jsonp",
+ jsonpCallback: "jsonpResults",
+ success: function(data){
+ ok( data.data, "JSON results returned (GET, custom callback name)" );
+ plus();
+ },
+ error: function(data){
+ ok( false, "Ajax error JSON (GET, custom callback name)" );
+ plus();
+ }
+ });
+
+ jQuery.ajax({
type: "POST",
url: "data/jsonp.php",
dataType: "jsonp",
@@ -602,6 +651,22 @@ test("jQuery.ajax() - JSONP, Local", function() {
});
});
+test("JSONP - Custom JSONP Callback", function() {
+ expect(1);
+ stop();
+
+ window.jsonpResults = function(data) {
+ ok( data.data, "JSON results returned (GET, custom callback function)" );
+ start();
+ };
+
+ jQuery.ajax({
+ url: "data/jsonp.php",
+ dataType: "jsonp",
+ jsonpCallback: "jsonpResults"
+ });
+});
+
test("jQuery.ajax() - JSONP, Remote", function() {
expect(4);
@@ -764,8 +829,8 @@ test("jQuery.getJSON - Using Native JSON", function() {
stop();
jQuery.getJSON(url("data/json.php"), function(json) {
window.JSON = old;
- equals( json, true, "Verifying return value" );
- start();
+ equals( json, true, "Verifying return value" );
+ start();
});
});