405 lines
11 KiB
HTML
405 lines
11 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||
|
"http://www.w3.org/TR/html4/strict.dtd">
|
||
|
<html>
|
||
|
<head>
|
||
|
<title>testing form and xhr utils</title>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
|
<style type="text/css">
|
||
|
@import "../../resources/dojo.css";
|
||
|
</style>
|
||
|
<script type="text/javascript"
|
||
|
src="../../dojo.js" djConfig="isDebug: true"></script>
|
||
|
<script type="text/javascript">
|
||
|
dojo.require("doh.runner");
|
||
|
dojo.addOnLoad(function(){
|
||
|
var f1fo = { 'blah': "blah" };
|
||
|
var f1foStr = "blah=blah";
|
||
|
var f1foJson = '{"blah":"blah"}';
|
||
|
|
||
|
var f2fo = {
|
||
|
blah: "blah",
|
||
|
multi: [
|
||
|
"thud",
|
||
|
"thonk"
|
||
|
],
|
||
|
textarea: "textarea_value"
|
||
|
};
|
||
|
var f2foStr = "blah=blah&multi=thud&multi=thonk&textarea=textarea_value";
|
||
|
var f2foJson = '{"blah":"blah","multi":["thud","thonk"],"textarea":"textarea_value"}';
|
||
|
|
||
|
var f3fo = {
|
||
|
spaces: "string with spaces"
|
||
|
};
|
||
|
var f3foStr = "spaces=string%20with%20spaces&";
|
||
|
var f3foJson = '{"spaces":"string with spaces"}';
|
||
|
|
||
|
var f5fo = { 'blåh': "bláh" };
|
||
|
var f5foStr = "bl%C3%A5h=bl%C3%A1h";
|
||
|
var f5foJson = '{"blåh":"bláh"}';
|
||
|
|
||
|
|
||
|
doh.register("t",
|
||
|
[
|
||
|
function formNodeToObject(t){
|
||
|
t.is(f1fo , dojo.formToObject(dojo.byId("f1")));
|
||
|
t.is(f5fo , dojo.formToObject(dojo.byId("f5")));
|
||
|
},
|
||
|
function formIdToObject(t){
|
||
|
t.is(f1fo , dojo.formToObject("f1"));
|
||
|
t.is(f5fo , dojo.formToObject("f5"));
|
||
|
},
|
||
|
function formToObjectWithMultiSelect(t){
|
||
|
t.is(f2fo , dojo.formToObject("f2"));
|
||
|
},
|
||
|
function objectToQuery(t){
|
||
|
t.is(f1foStr , dojo.objectToQuery(f1fo));
|
||
|
t.is(f5foStr , dojo.objectToQuery(f5fo));
|
||
|
},
|
||
|
function objectToQueryArr(t){
|
||
|
t.is(f2foStr, dojo.objectToQuery(f2fo));
|
||
|
},
|
||
|
function formToQuery(t){
|
||
|
t.is(f1foStr, dojo.formToQuery("f1"));
|
||
|
t.is(f5foStr, dojo.formToQuery("f5"));
|
||
|
},
|
||
|
function formToQueryArr(t){
|
||
|
t.is(f2foStr, dojo.formToQuery("f2"));
|
||
|
},
|
||
|
function formToJson(t){
|
||
|
t.is(f1foJson, dojo.formToJson("f1"));
|
||
|
t.is(f5foJson, dojo.formToJson("f5"));
|
||
|
},
|
||
|
function formToJsonArr(t){
|
||
|
t.is(f2foJson, dojo.formToJson("f2"));
|
||
|
},
|
||
|
function queryToObject(t){
|
||
|
t.is(f1fo , dojo.queryToObject(f1foStr));
|
||
|
t.is(f2fo , dojo.queryToObject(f2foStr));
|
||
|
t.is(f3fo , dojo.queryToObject(f3foStr));
|
||
|
t.is(f5fo , dojo.queryToObject(f5foStr));
|
||
|
},
|
||
|
function textContentHandler(t){
|
||
|
t.is("foo bar baz ",
|
||
|
dojo._contentHandlers.text({
|
||
|
responseText: "foo bar baz "
|
||
|
})
|
||
|
);
|
||
|
},
|
||
|
function jsonContentHandler(t){
|
||
|
var jsonObj = {
|
||
|
foo: "bar",
|
||
|
baz: [
|
||
|
{ thonk: "blarg" },
|
||
|
"xyzzy!"
|
||
|
]
|
||
|
};
|
||
|
t.is(jsonObj,
|
||
|
dojo._contentHandlers.json({
|
||
|
responseText: dojo.toJson(jsonObj)
|
||
|
})
|
||
|
);
|
||
|
},
|
||
|
function jsonCFContentHandler(t){
|
||
|
var jsonObj = {
|
||
|
foo: "bar",
|
||
|
baz: [
|
||
|
{ thonk: "blarg" },
|
||
|
"xyzzy!"
|
||
|
]
|
||
|
};
|
||
|
var e;
|
||
|
try{
|
||
|
dojo._contentHandlers["json-comment-filtered"]({
|
||
|
responseText: dojo.toJson(jsonObj)
|
||
|
})
|
||
|
}catch(ex){
|
||
|
e = ex;
|
||
|
}finally{
|
||
|
// did we fail closed?
|
||
|
t.is((typeof e), "object");
|
||
|
}
|
||
|
t.is(jsonObj,
|
||
|
dojo._contentHandlers["json-comment-filtered"]({
|
||
|
responseText: "\tblag\n/*"+dojo.toJson(jsonObj)+"*/\n\r\t\r"
|
||
|
})
|
||
|
);
|
||
|
},
|
||
|
function jsContentHandler(t){
|
||
|
var jsonObj = {
|
||
|
foo: "bar",
|
||
|
baz: [
|
||
|
{ thonk: "blarg" },
|
||
|
"xyzzy!"
|
||
|
]
|
||
|
};
|
||
|
t.is(jsonObj,
|
||
|
dojo._contentHandlers["javascript"]({
|
||
|
responseText: "("+dojo.toJson(jsonObj)+")"
|
||
|
})
|
||
|
);
|
||
|
t.t(dojo._contentHandlers["javascript"]({
|
||
|
responseText: "true;"
|
||
|
})
|
||
|
);
|
||
|
t.f(dojo._contentHandlers["javascript"]({
|
||
|
responseText: "false;"
|
||
|
})
|
||
|
);
|
||
|
},
|
||
|
function xmlContentHandler(t){
|
||
|
var fauxObj = {
|
||
|
foo: "bar",
|
||
|
baz: [
|
||
|
{ thonk: "blarg" },
|
||
|
"xyzzy!"
|
||
|
]
|
||
|
};
|
||
|
t.is(fauxObj,
|
||
|
dojo._contentHandlers["xml"]({ responseXML: fauxObj })
|
||
|
);
|
||
|
},
|
||
|
function xhrGet(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.xhrGet({
|
||
|
url: "xhr.html", // self
|
||
|
preventCache: true,
|
||
|
load: function(text, ioArgs){
|
||
|
t.is(4, ioArgs.xhr.readyState);
|
||
|
return text; //must return a value here or the parent test deferred fails.
|
||
|
}
|
||
|
});
|
||
|
t.t(td instanceof dojo.Deferred);
|
||
|
td.addCallback(d, "callback");
|
||
|
return d;
|
||
|
},
|
||
|
function xhrGet404(t){
|
||
|
var d = new doh.Deferred();
|
||
|
try{
|
||
|
var td = dojo.xhrGet({
|
||
|
url: "xhr_blarg.html", // doesn't exist
|
||
|
error: function(err, ioArgs){
|
||
|
t.is(404, ioArgs.xhr.status);
|
||
|
return err; //must return a value here or the parent test deferred fails.
|
||
|
}
|
||
|
});
|
||
|
// td.addErrback(d, "callback");
|
||
|
}catch(e){
|
||
|
d.callback(true);
|
||
|
}
|
||
|
// return d;
|
||
|
},
|
||
|
function xhrGetContent(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.xhrGet({
|
||
|
url: "xhr.html?color=blue",
|
||
|
content: {
|
||
|
foo: [ "bar", "baz" ],
|
||
|
thud: "thonk",
|
||
|
xyzzy: 3
|
||
|
}
|
||
|
});
|
||
|
td.addCallback(function(text){
|
||
|
// console.debug(td, td.xhr, td.args);
|
||
|
t.is("xhr.html?color=blue&foo=bar&foo=baz&thud=thonk&xyzzy=3",
|
||
|
td.ioArgs.url);
|
||
|
d.callback(true);
|
||
|
});
|
||
|
return d;
|
||
|
},
|
||
|
function xhrGetForm(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.xhrGet({
|
||
|
url: "xhr.html", // self
|
||
|
form: "f3"
|
||
|
});
|
||
|
td.addCallback(function(xhr){
|
||
|
// console.debug(td.args.url);
|
||
|
t.is("xhr.html?spaces=string%20with%20spaces", td.ioArgs.url);
|
||
|
d.callback(true);
|
||
|
});
|
||
|
return d;
|
||
|
},
|
||
|
function xhrGetFormWithContent(t){
|
||
|
// ensure that stuff passed via content over-rides
|
||
|
// what's specified in the form
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.xhrGet({
|
||
|
url: "xhr.html", // self
|
||
|
form: "f3",
|
||
|
content: { spaces: "blah" }
|
||
|
});
|
||
|
td.addCallback(function(xhr){
|
||
|
// console.debug(td.args.url);
|
||
|
t.is("xhr.html?spaces=blah", td.ioArgs.url);
|
||
|
d.callback(true);
|
||
|
});
|
||
|
return d;
|
||
|
},
|
||
|
function xhrPost(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.xhrPost({
|
||
|
url: "xhr.html?foo=bar", // self
|
||
|
content: { color: "blue"},
|
||
|
handle: function(res, ioArgs){
|
||
|
if((dojo._isDocumentOk(ioArgs.xhr))||
|
||
|
(ioArgs.xhr.status == 405)
|
||
|
){
|
||
|
d.callback(true);
|
||
|
}else{
|
||
|
d.errback(false);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
// t.t(td instanceof dojo.Deferred);
|
||
|
return d;
|
||
|
},
|
||
|
function xhrPostWithContent(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.xhrPost({
|
||
|
url: "xhr.html",
|
||
|
content: {
|
||
|
foo: [ "bar", "baz" ],
|
||
|
thud: "thonk",
|
||
|
xyzzy: 3
|
||
|
}
|
||
|
});
|
||
|
td.addBoth(function(text){
|
||
|
t.is("foo=bar&foo=baz&thud=thonk&xyzzy=3",
|
||
|
td.ioArgs.query);
|
||
|
if( (dojo._isDocumentOk(td.ioArgs.xhr))||
|
||
|
(td.ioArgs.xhr.status == 405)
|
||
|
){
|
||
|
d.callback(true);
|
||
|
}else{
|
||
|
d.errback(false);
|
||
|
}
|
||
|
});
|
||
|
return d;
|
||
|
},
|
||
|
function xhrPostForm(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var form = dojo.byId("f4");
|
||
|
|
||
|
//Make sure we can send a form to its
|
||
|
//action URL. See trac: #2844.
|
||
|
var td = dojo.xhrPost({
|
||
|
form: form
|
||
|
});
|
||
|
td.addCallback(function(){
|
||
|
d.callback(true);
|
||
|
});
|
||
|
td.addErrback(function(error){
|
||
|
d.callback(error);
|
||
|
});
|
||
|
// t.t(td instanceof dojo.Deferred);
|
||
|
return d;
|
||
|
},
|
||
|
function rawXhrPost(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.rawXhrPost({
|
||
|
url: "xhr.html", // self
|
||
|
postContent: "foo=bar&color=blue&height=average",
|
||
|
handle: function(res, ioArgs){
|
||
|
if((dojo._isDocumentOk(ioArgs.xhr))||
|
||
|
(ioArgs.xhr.status == 405)
|
||
|
){
|
||
|
d.callback(true);
|
||
|
}else{
|
||
|
d.errback(false);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
// t.t(td instanceof dojo.Deferred);
|
||
|
return d;
|
||
|
},
|
||
|
function xhrPut(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.xhrPut({
|
||
|
url: "xhrDummyMethod.php?foo=bar", // self
|
||
|
content: { color: "blue"},
|
||
|
handle: function(res, ioArgs){
|
||
|
if((dojo._isDocumentOk(ioArgs.xhr))||
|
||
|
(ioArgs.xhr.status == 403)
|
||
|
){
|
||
|
d.callback(true);
|
||
|
}else{
|
||
|
d.errback(false);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
// t.t(td instanceof dojo.Deferred);
|
||
|
return d;
|
||
|
},
|
||
|
function xhrDelete(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.xhrDelete({
|
||
|
url: "xhrDummyMethod.php", // self
|
||
|
preventCache: true,
|
||
|
handle: function(res, ioArgs){
|
||
|
if((dojo._isDocumentOk(ioArgs.xhr))||
|
||
|
(ioArgs.xhr.status == 403)
|
||
|
){
|
||
|
d.callback(true);
|
||
|
}else{
|
||
|
d.errback(false);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
// t.t(td instanceof dojo.Deferred);
|
||
|
return d;
|
||
|
},
|
||
|
function xhrCancel(t){
|
||
|
var d = new doh.Deferred();
|
||
|
var td = dojo.xhrPost({
|
||
|
url: "xhrDummyMethod.php", // self
|
||
|
handle: function(res, ioArgs){
|
||
|
if(res instanceof Error && res.dojoType == "cancel"){
|
||
|
d.callback(true);
|
||
|
}else{
|
||
|
d.errback(false);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
td.cancel();
|
||
|
// t.t(td instanceof dojo.Deferred);
|
||
|
return d;
|
||
|
}
|
||
|
// FIXME: need to add tests for wrapForm
|
||
|
]
|
||
|
);
|
||
|
doh.run();
|
||
|
});
|
||
|
</script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<form id="f1" style="border: 1px solid black;">
|
||
|
<input type="text" name="blah" value="blah">
|
||
|
<input type="text" name="no_value" value="blah" disabled>
|
||
|
<input type="button" name="no_value2" value="blah">
|
||
|
</form>
|
||
|
<form id="f2" style="border: 1px solid black;">
|
||
|
<input type="text" name="blah" value="blah">
|
||
|
<input type="text" name="no_value" value="blah" disabled>
|
||
|
<input type="button" name="no_value2" value="blah">
|
||
|
<select type="select" multiple name="multi" size="5">
|
||
|
<option value="blah">blah</option>
|
||
|
<option value="thud" selected>thud</option>
|
||
|
<option value="thonk" selected>thonk</option>
|
||
|
</select>
|
||
|
<textarea name="textarea">textarea_value</textarea>
|
||
|
</form>
|
||
|
<form id="f3" style="border: 1px solid black;">
|
||
|
<input type="hidden" name="spaces" value="string with spaces">
|
||
|
</form>
|
||
|
<form id="f4" style="border: 1px solid black;" action="xhrDummyMethod.php">
|
||
|
<input type="hidden" name="action" value="Form with input named action">
|
||
|
</form>
|
||
|
<form id="f5" style="border: 1px solid black;">
|
||
|
<input type="text" name="blåh" value="bláh">
|
||
|
<input type="text" name="no_value" value="blah" disabled>
|
||
|
<input type="button" name="no_value2" value="blah">
|
||
|
</form>
|
||
|
</body>
|
||
|
</html>
|
||
|
|