You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.0 KiB
106 lines
3.0 KiB
2 years ago
|
/*
|
||
|
Copyright (c) 2004-2006, The Dojo Foundation
|
||
|
All Rights Reserved.
|
||
|
|
||
|
Licensed under the Academic Free License version 2.1 or above OR the
|
||
|
modified BSD license. For more information on Dojo licensing, see:
|
||
|
|
||
|
http://dojotoolkit.org/community/licensing.shtml
|
||
|
*/
|
||
|
|
||
|
dojo.registerModulePath("tests", "tests");
|
||
|
dojo.require("tests.MockXMLHttpRequest");
|
||
|
dojo.require("dojo.io.*");
|
||
|
|
||
|
var testTimerCalled = false;
|
||
|
var testBindJson = null;
|
||
|
|
||
|
function test_MockXMLHttpRequest(){
|
||
|
if (dojo.hostenv.name_ == 'browser') {
|
||
|
//test basic functionality using dojo.hostenv.getText
|
||
|
//(only test on environments that implement getText with XHR)
|
||
|
var responseText = "this is a test!";
|
||
|
tests.MockXMLHttpRequest.set(responseText, 1000); //simulate a 1 sec response time
|
||
|
dojo.hostenv.getText('urn:this_is_ignored',
|
||
|
function(data) {
|
||
|
jum.assertTrue(data == responseText);
|
||
|
jum.assertTrue(testTimerCalled);
|
||
|
});
|
||
|
tests.MockXMLHttpRequest.restore();
|
||
|
setTimeout(function() { testTimerCalled = true; }, 200);
|
||
|
}
|
||
|
|
||
|
//test dojo.io.bind
|
||
|
tests.MockXMLHttpRequest.set('[10]', 100);
|
||
|
dojo.io.bind({
|
||
|
url: "http://ignore",
|
||
|
method: "get",
|
||
|
mimetype: "text/json",
|
||
|
handle: function(type, data, evt) {
|
||
|
if(type == "load"){
|
||
|
testBindJson = data;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
setTimeout(function() { jum.assertTrue('async io completed',
|
||
|
testBindJson && testBindJson[0] == 10);}, 500);
|
||
|
|
||
|
//test abort()
|
||
|
tests.MockXMLHttpRequest.set('test abort', 500);
|
||
|
bindKw = {
|
||
|
url: "http://ignore2",
|
||
|
method: "get",
|
||
|
mimetype: "text/plain" ,
|
||
|
handle: function(type, data, evt) {
|
||
|
jum.assertTrue("bind.abort didn't work", false);
|
||
|
}
|
||
|
}
|
||
|
var request = dojo.io.bind(bindKw);
|
||
|
request.abort();
|
||
|
|
||
|
//test post
|
||
|
tests.MockXMLHttpRequest.set(function(xhr) { return xhr.data; }, 100);
|
||
|
var postData = "test post data";
|
||
|
dojo.io.bind({
|
||
|
url: "http://ignore",
|
||
|
method: "post",
|
||
|
postContent: postData,
|
||
|
mimetype: "text/plain",
|
||
|
handle: function(type, data, evt) {
|
||
|
jum.assertTrue("receive post data", type == "load" && data == postData);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
//test sync
|
||
|
//(note: response time doesn't work with sync)
|
||
|
var testSyncData = '';
|
||
|
dojo.io.bind({
|
||
|
sync: true,
|
||
|
url: "http://ignore",
|
||
|
method: "post",
|
||
|
postContent: postData,
|
||
|
mimetype: "text/plain",
|
||
|
handle: function(type, data, evt) {
|
||
|
if(type == "load"){
|
||
|
testSyncData = data;
|
||
|
} else {
|
||
|
dojo.debug('mock request problem: ' + type + ' ' + dojo.json.serialize(data));
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
//handle func should be called immediately
|
||
|
jum.assertTrue("test sync", testSyncData == postData);
|
||
|
|
||
|
tests.MockXMLHttpRequest.restore();
|
||
|
|
||
|
//test tests.MockXMLHttpRequest.wrap
|
||
|
var responseText = "this is a test!";
|
||
|
tests.MockXMLHttpRequest.wrap(dj_global, 'wrapMockRequestTest', responseText, 50);
|
||
|
jum.assertFalse( wrapMockRequestTest() );
|
||
|
//the wrapping should only happen once
|
||
|
jum.assertTrue( wrapMockRequestTest() );
|
||
|
}
|
||
|
|
||
|
function wrapMockRequestTest() {
|
||
|
return dojo.hostenv.getXmlhttpObject == tests.MockXMLHttpRequest._originalXmlhttpObjectGetter;
|
||
|
}
|