1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2
"http://www.w3.org/TR/html4/strict.dtd">
5
<title>testing form and xhr utils</title>
6
<style type="text/css">
7
@import "../../resources/dojo.css";
9
<script type="text/javascript"
10
src="../../dojo.js" djConfig="isDebug: true"></script>
11
<script type="text/javascript">
12
dojo.require("doh.runner");
13
dojo.addOnLoad(function(){
14
var f1fo = { blah: "blah" };
15
var f1foStr = "blah=blah";
16
var f1foJson = '{"blah": "blah"}';
24
textarea: "textarea_value"
26
var f2foStr = "blah=blah&multi=thud&multi=thonk&textarea=textarea_value";
27
var f2foJson = '{"blah": "blah", "multi": ["thud", "thonk"], "textarea": "textarea_value"}';
30
spaces: "string with spaces"
32
var f3foStr = "spaces=string%20with%20spaces&";
33
var f3foJson = '{"spaces": "string with spaces"}';
37
function formNodeToObject(t){
38
t.is(f1fo , dojo.formToObject(dojo.byId("f1")));
40
function formIdToObject(t){
41
t.is(f1fo , dojo.formToObject("f1"));
43
function formToObjectWithMultiSelect(t){
44
t.is(f2fo , dojo.formToObject("f2"));
46
function objectToQuery(t){
47
t.is(f1foStr , dojo.objectToQuery(f1fo));
49
function objectToQueryArr(t){
50
t.is(f2foStr, dojo.objectToQuery(f2fo));
52
function formToQuery(t){
53
t.is(f1foStr, dojo.formToQuery("f1"));
55
function formToQueryArr(t){
56
t.is(f2foStr, dojo.formToQuery("f2"));
58
function formToJson(t){
59
t.is(f1foJson, dojo.formToJson("f1"));
61
function formToJsonArr(t){
62
t.is(f2foJson, dojo.formToJson("f2"));
64
function queryToObject(t){
65
t.is(f1fo , dojo.queryToObject(f1foStr));
66
t.is(f2fo , dojo.queryToObject(f2foStr));
67
t.is(f3fo , dojo.queryToObject(f3foStr));
69
function textContentHandler(t){
71
dojo._contentHandlers.text({
72
responseText: "foo bar baz "
76
function jsonContentHandler(t){
85
dojo._contentHandlers.json({
86
responseText: dojo.toJson(jsonObj)
90
function jsonCFContentHandler(t){
100
dojo._contentHandlers["json-comment-filtered"]({
101
responseText: dojo.toJson(jsonObj)
106
// did we fail closed?
107
t.is((typeof e), "object");
110
dojo._contentHandlers["json-comment-filtered"]({
111
responseText: "\tblag\n/*"+dojo.toJson(jsonObj)+"*/\n\r\t\r"
115
function jsContentHandler(t){
124
dojo._contentHandlers["javascript"]({
125
responseText: "("+dojo.toJson(jsonObj)+")"
128
t.t(dojo._contentHandlers["javascript"]({
129
responseText: "true;"
132
t.f(dojo._contentHandlers["javascript"]({
133
responseText: "false;"
137
function xmlContentHandler(t){
146
dojo._contentHandlers["xml"]({ responseXML: fauxObj })
150
var d = new doh.Deferred();
151
var td = dojo.xhrGet({
152
url: "xhr.html", // self
154
load: function(text, ioArgs){
155
t.is(4, ioArgs.xhr.readyState);
156
return text; //must return a value here or the parent test deferred fails.
159
t.t(td instanceof dojo.Deferred);
160
td.addCallback(d, "callback");
163
function xhrGet404(t){
164
var d = new doh.Deferred();
166
var td = dojo.xhrGet({
167
url: "xhr_blarg.html", // doesn't exist
168
error: function(err, ioArgs){
169
t.is(404, ioArgs.xhr.status);
170
return err; //must return a value here or the parent test deferred fails.
173
// td.addErrback(d, "callback");
179
function xhrGetContent(t){
180
var d = new doh.Deferred();
181
var td = dojo.xhrGet({
182
url: "xhr.html?color=blue",
184
foo: [ "bar", "baz" ],
189
td.addCallback(function(text){
190
// console.debug(td, td.xhr, td.args);
191
t.is("xhr.html?color=blue&foo=bar&foo=baz&thud=thonk&xyzzy=3",
197
function xhrGetForm(t){
198
var d = new doh.Deferred();
199
var td = dojo.xhrGet({
200
url: "xhr.html", // self
203
td.addCallback(function(xhr){
204
// console.debug(td.args.url);
205
t.is("xhr.html?spaces=string%20with%20spaces", td.ioArgs.url);
210
function xhrGetFormWithContent(t){
211
// ensure that stuff passed via content over-rides
212
// what's specified in the form
213
var d = new doh.Deferred();
214
var td = dojo.xhrGet({
215
url: "xhr.html", // self
217
content: { spaces: "blah" }
219
td.addCallback(function(xhr){
220
// console.debug(td.args.url);
221
t.is("xhr.html?spaces=blah", td.ioArgs.url);
227
var d = new doh.Deferred();
228
var td = dojo.xhrPost({
229
url: "xhr.html?foo=bar", // self
230
content: { color: "blue"},
231
handle: function(res, ioArgs){
232
if((dojo._isDocumentOk(ioArgs.xhr))||
233
(ioArgs.xhr.status == 405)
241
// t.t(td instanceof dojo.Deferred);
244
function xhrPostWithContent(t){
245
var d = new doh.Deferred();
246
var td = dojo.xhrPost({
249
foo: [ "bar", "baz" ],
254
td.addBoth(function(text){
255
t.is("foo=bar&foo=baz&thud=thonk&xyzzy=3",
257
if( (dojo._isDocumentOk(td.ioArgs.xhr))||
258
(td.ioArgs.xhr.status == 405)
267
function xhrPostForm(t){
268
var d = new doh.Deferred();
269
var form = dojo.byId("f4");
271
//Make sure we can send a form to its
272
//action URL. See trac: #2844.
273
var td = dojo.xhrPost({
276
td.addCallback(function(){
279
td.addErrback(function(error){
282
// t.t(td instanceof dojo.Deferred);
285
function rawXhrPost(t){
286
var d = new doh.Deferred();
287
var td = dojo.rawXhrPost({
288
url: "xhr.html", // self
289
postContent: "foo=bar&color=blue&height=average",
290
handle: function(res, ioArgs){
291
if((dojo._isDocumentOk(ioArgs.xhr))||
292
(ioArgs.xhr.status == 405)
300
// t.t(td instanceof dojo.Deferred);
304
var d = new doh.Deferred();
305
var td = dojo.xhrPut({
306
url: "xhrDummyMethod.php?foo=bar", // self
307
content: { color: "blue"},
308
handle: function(res, ioArgs){
309
if((dojo._isDocumentOk(ioArgs.xhr))||
310
(ioArgs.xhr.status == 403)
318
// t.t(td instanceof dojo.Deferred);
321
function xhrDelete(t){
322
var d = new doh.Deferred();
323
var td = dojo.xhrDelete({
324
url: "xhrDummyMethod.php", // self
326
handle: function(res, ioArgs){
327
if((dojo._isDocumentOk(ioArgs.xhr))||
328
(ioArgs.xhr.status == 403)
336
// t.t(td instanceof dojo.Deferred);
339
function xhrCancel(t){
340
var d = new doh.Deferred();
341
var td = dojo.xhrPost({
342
url: "xhrDummyMethod.php", // self
343
handle: function(res, ioArgs){
344
if(res instanceof Error && res.dojoType == "cancel"){
352
// t.t(td instanceof dojo.Deferred);
355
// FIXME: need to add tests for wrapForm
363
<form id="f1" style="border: 1px solid black;">
364
<input type="text" name="blah" value="blah">
365
<input type="text" name="no_value" value="blah" disabled>
366
<input type="button" name="no_value2" value="blah">
368
<form id="f2" style="border: 1px solid black;">
369
<input type="text" name="blah" value="blah">
370
<input type="text" name="no_value" value="blah" disabled>
371
<input type="button" name="no_value2" value="blah">
372
<select type="select" multiple name="multi" size="5">
373
<option value="blah">blah</option>
374
<option value="thud" selected>thud</option>
375
<option value="thonk" selected>thonk</option>
377
<textarea name="textarea">textarea_value</textarea>
379
<form id="f3" style="border: 1px solid black;">
380
<input type="hidden" name="spaces" value="string with spaces">
382
<form id="f4" style="border: 1px solid black;" action="xhrDummyMethod.php">
383
<input type="hidden" name="action" value="Form with input named action">