UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

146 lines (111 loc) 3.8 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2007-2008 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Fabian Jakobs (fjakobs) ************************************************************************ */ /* */ /** * * @asset(qx/test/*) */ qx.Class.define("qx.test.io.remote.RequestXhr", { extend : qx.test.io.remote.AbstractRequest, members : { // Overridden _createRequest : function() { var url = this.getUrl("qx/test/xmlhttp/echo_get_request.php"); return new qx.io.remote.Request(url, "GET", "text/plain"); }, testSynchronous : function() { if (this.isLocal()) { this.needsPHPWarning(); return; } var completedCount = 0; for (var i = 0; i < this._getRequests().length; i++) { var request = this._getRequests()[i]; request.setAsynchronous(false); request.setParameter("test", "test" + i); request.addListener("completed", function(e) { completedCount++; var response = qx.lang.Json.parse(e.getContent()); request = e.getTarget(); this.assertEquals(request.getParameter("test"), response["test"]); }, this); request.send(); } this.assertEquals(i, completedCount, "Test doesn't run synchronous!"); }, testSynchronousAndAsynchronousMix : function() { if (this.isLocal()) { this.needsPHPWarning(); return; } var asynchronousRequest = this._getRequests()[0]; var synchronousRequest = this._getRequests()[1]; asynchronousRequest.setParameter("test", "asynchronousRequest"); asynchronousRequest.setParameter("sleep", 1); synchronousRequest.setParameter("test", "synchronousRequest"); synchronousRequest.setAsynchronous(false); var asynchronousRequestFinished = false; var synchronousRequestFinished = false; asynchronousRequest.addListener("completed", function(e) { //this.resume(function() //{ asynchronousRequestFinished = true; var response = qx.lang.Json.parse(e.getContent()); var request = e.getTarget(); this.assertEquals(request.getParameter("test"), response["test"]); //}, this); }, this); synchronousRequest.addListener("completed", function(e) { synchronousRequestFinished = true; var response = qx.lang.Json.parse(e.getContent()); var request = e.getTarget(); this.assertEquals(request.getParameter("test"), response["test"]); }, this); asynchronousRequest.send(); synchronousRequest.send(); var that = this; this.wait(5000, function() { that.assertTrue(asynchronousRequestFinished); that.assertTrue(synchronousRequestFinished); }); }, testGetResponseHeader : function() { if (this.isLocal()) { this.needsPHPWarning(); return; } var request = new qx.io.remote.Request(); // Response header is "juhu" request.setUrl(this.getUrl("qx/test/xmlhttp/send_known_header.php")); request.addListener("completed", function(e) { this.resume(function() { this.assertEquals("kinners", e.getResponseHeader("juhu"), "Exact case match"); this.assertEquals("kinners", e.getResponseHeader("Juhu"), "Case insensitive match"); }, this); }, this); var that = this; window.setTimeout(function() { request.send(); }, 1000); this.wait(5000); } } });