diff options
Diffstat (limited to 'www/test/1.8.6/test/util/util.js')
-rw-r--r-- | www/test/1.8.6/test/util/util.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/www/test/1.8.6/test/util/util.js b/www/test/1.8.6/test/util/util.js new file mode 100644 index 00000000..322deb09 --- /dev/null +++ b/www/test/1.8.6/test/util/util.js @@ -0,0 +1,108 @@ +/* Test Utilities */ + +function byId(id) { + return document.getElementById(id); +} + +function make(htmlStr) { + var makeFn = function () { + var range = document.createRange(); + var fragment = range.createContextualFragment(htmlStr); + var wa = getWorkArea(); + var child = null; + var children = fragment.children || fragment.childNodes; // IE + while(children.length > 0) { + child = children[0]; + wa.appendChild(child); + htmx.process(child); + } + return child; // return last added element + }; + if (getWorkArea()) { + return makeFn(); + } else { + ready(makeFn); + } +} + +function ready(fn) { + if (document.readyState !== 'loading') { + fn(); + } else { + document.addEventListener('DOMContentLoaded', fn); + } +} + +function getWorkArea() { + return byId("work-area"); +} + +function clearWorkArea() { + getWorkArea().innerHTML = ""; +} + +function removeWhiteSpace(str) { + return str.replace(/\s/g, ""); +} + +function getHTTPMethod(xhr) { + return xhr.requestHeaders['X-HTTP-Method-Override'] || xhr.method; +} + +function makeServer(){ + var server = sinon.fakeServer.create(); + server.fakeHTTPMethods = true; + server.getHTTPMethod = function(xhr) { + return getHTTPMethod(xhr); + } + return server; +} + +function parseParams(str) { + var re = /([^&=]+)=?([^&]*)/g; + var decode = function (str) { + return decodeURIComponent(str.replace(/\+/g, ' ')); + }; + var params = {}, e; + if (str) { + if (str.substr(0, 1) == '?') { + str = str.substr(1); + } + while (e = re.exec(str)) { + var k = decode(e[1]); + var v = decode(e[2]); + if (params[k] !== undefined) { + if (!Array.isArray(params[k])) { + params[k] = [params[k]]; + } + params[k].push(v); + } else { + params[k] = v; + } + } + } + return params; +} + + +function getQuery(url) { + var question = url.indexOf("?"); + var hash = url.indexOf("#"); + if(hash==-1 && question==-1) return ""; + if(hash==-1) hash = url.length; + return question==-1 || hash==question+1 ? url.substring(hash) : + url.substring(question+1,hash); +} + +function getParameters(xhr) { + if (getHTTPMethod(xhr) == "GET") { + return parseParams(getQuery(xhr.url)); + } else { + return parseParams(xhr.requestBody); + } +} + +function log(val) { + console.log(val); + return val; +}
\ No newline at end of file |