Skip to content
Permalink
Browse files

Got some XHR tests to run, still some hanging threads (need to invest…

…igate). Started moving some Ajax tests away from using PHP (more portable this way). Fixed a number of XHR env bugs.
  • Loading branch information
jeresig committed Jul 9, 2007
1 parent de71a04 commit d776dc9d5c5322e81b56272728325990ed6892bb
Showing with 74 additions and 47 deletions.
  1. +27 −16 build/runtest/env.js
  2. +1 −0 build/runtest/test.js
  3. +13 −0 build/runtest/testrunner.js
  4. +1 −0 build/test/data/json_obj.js
  5. +1 −0 build/test/data/name.html
  6. +31 −31 src/ajax/ajaxTest.js
@@ -17,17 +17,21 @@ var window = this;
}
};

var curLocation = (new java.io.File("./")).toURL();

window.__defineSetter__("location", function(url){
curLocation = new java.net.URL( curLocation, url );

window.document = new DOMDocument(
new Packages.org.xml.sax.InputSource(
new java.io.InputStreamReader(
new java.io.FileInputStream(url))));
new java.io.FileInputStream( url ))));
});

window.__defineGetter__("location", function(url){
return {
get protocol(){
return "file:";
return curLocation.getProtocol() + ":";
}
};
});
@@ -490,44 +494,51 @@ var window = this;
},
getResponseHeader: function(header){ },
send: function(data){
var self = this;

function makeRequest(){
var url = new java.net.URL(this.url),
var url = new java.net.URL(curLocation, self.url),
connection = url.openConnection();

// Add headers to Java connection
for (var header in this.headers)
connection.addRequestProperty(header, this.headers[header]);
for (var header in self.headers)
connection.addRequestProperty(header, self.headers[header]);

connection.connect();

// Stick the response headers into responseHeaders
for (i=0; ; i++) {
for (var i=0; ; i++) {
var headerName = connection.getHeaderFieldKey(i);
var headerValue = connection.getHeaderField(i);
if (!headerName && !headerValue) break;
if (headerName)
this.responseHeaders[headerName] = headerValue;
self.responseHeaders[headerName] = headerValue;
}

this.readyState = 4;
this.status = parseInt(connection.responseCode);
this.statusText = connection.responseMessage;
self.readyState = 4;
self.status = parseInt(connection.responseCode);
self.statusText = connection.responseMessage;

var stream = new java.io.InputStreamReader(
connection.getInputStream()),
buffer = new java.io.BufferedReader(stream),
line;

while ((line = buffer.readLine()) != null)
this.responseText += line;
self.responseText += line;

self.responseXML = null;

try {
this.responseXML = new DOMDocument(this.responseText);
} catch(e) {
this.responseXML = null;
if ( self.responseText.match(/^\s*</) ) {
try {
self.responseXML = new DOMDocument(
new java.io.ByteArrayInputStream(
(new java.lang.String(
self.responseText)).getBytes("UTF8")));
} catch(e) {}
}

this.onreadystatechange();
self.onreadystatechange();
}

if (this.async)
@@ -11,6 +11,7 @@ load(
"src/selector/selectorTest.js",
"src/event/eventTest.js",
"src/fx/fxTest.js"
//"src/ajax/ajaxTest.js"
);

// Display the results
@@ -181,4 +181,17 @@ function triggerEvent( elem, type, event ) {
elem.fireEvent("on"+type);
}
*/
}

/**
* Add random number to url to stop IE from caching
*
* @example url("data/test.html")
* @result "data/test.html?10538358428943"
*
* @example url("data/test.php?foo=bar")
* @result "data/test.php?foo=bar&10538358345554"
*/
function url(value) {
return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000);
}
@@ -0,0 +1 @@
{ "data": {"lang": "en", "length": 25} }
@@ -0,0 +1 @@
ERROR <script type="text/javascript">ok( true, "name.html retrieved" );</script>
@@ -1,7 +1,5 @@
module("ajax");

if ( location.protocol != "file:" ) {

test("serialize()", function() {
expect(1);
var data = $(':input').not('button').serialize();
@@ -24,6 +22,31 @@ test("param", function() {
ok( $.param(params) == "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All%20your%20base%20are%20belong%20to%20us", "even more arrays" );
});

test("evalScripts() with no script elements", function() {
expect(2);

var data = "this is just some bogus text";
$('#foo').html(data);
ok ( true, 'before evalScripts()');
try {
$('#foo').evalScripts();
} catch(e) {
ok (false, 'exception evaluating scripts: ' + e.message);
}
ok ( true, 'after evalScripts()');
});

test("synchronous request", function() {
ok( /^{ "data"/.test( $.ajax({url: url("data/json_obj.js"), async: false}).responseText ), "check returned text" );
});

test("synchronous request with callbacks", function() {
expect(2);
var result;
$.ajax({url: url("data/json_obj.js"), async: false, success: function(data) { ok(true, "sucess callback executed"); result = data; } });
ok( /^{ "data"/.test( result ), "check returned text" );
});

test("pass-through request object", function() {
expect(7);
stop(true);
@@ -32,30 +55,19 @@ test("pass-through request object", function() {
if(count++ == 6)
start();
}
var target = "data/name.php";
var target = "data/name.html";
ok( $.get(url(target), success), "get" );
ok( $.getIfModified(url(target), success), "getIfModified" );
ok( $.post(url(target), success), "post" );
ok( $.getScript(url("data/test.js"), success), "script" );
ok( $.getJSON(url("data/json.php"), success), "json" );
ok( $.getJSON(url("data/json_obj.js"), success), "json" );
ok( $.ajax({url: url(target), success: success}), "generic" );
});

test("synchronous request", function() {
ok( /^{ "data"/.test( $.ajax({url: url("data/json.php"), async: false}).responseText ), "check returned text" );
});

test("synchronous request with callbacks", function() {
expect(2);
var result;
$.ajax({url: url("data/json.php"), async: false, success: function(data) { ok(true, "sucess callback executed"); result = data; } });
ok( /^{ "data"/.test( result ), "check returned text" );
});

test("load(String, Object, Function) - simple: inject text into DOM", function() {
expect(2);
stop();
$('#first').load(url("data/name.php"), function() {
$('#first').load(url("data/name.html"), function() {
ok( /^ERROR/.test($('#first').text()), 'Check if content was injected into the DOM' );
start();
});
@@ -64,9 +76,11 @@ test("load(String, Object, Function) - simple: inject text into DOM", function()
test("load(String, Object, Function) - inject without callback", function() {
expect(1);
stop(true); // check if load can be called with only url
$('#first').load("data/name.php");
$('#first').load("data/name.html");
});

if ( location.protocol != "file:" ) {

test("load(String, Object, Function) - check scripts", function() {
expect(7);
stop();
@@ -365,20 +379,6 @@ test("ajaxSetup()", function() {
$.ajax();
});

test("evalScripts() with no script elements", function() {
expect(2);

var data = "this is just some bogus text";
$('#foo').html(data);
ok ( true, 'before evalScripts()');
try {
$('#foo').evalScripts();
} catch(e) {
ok (false, 'exception evaluating scripts: ' + e.message);
}
ok ( true, 'after evalScripts()');
});

test("custom timeout does not set error message when timeout occurs, see #970", function() {
stop();
$.ajax({

0 comments on commit d776dc9

Please sign in to comment.
You can’t perform that action at this time.