summaryrefslogtreecommitdiffstatshomepage
path: root/test/util/util.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/util/util.js')
-rw-r--r--test/util/util.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/test/util/util.js b/test/util/util.js
new file mode 100644
index 00000000..f6d2dec8
--- /dev/null
+++ b/test/util/util.js
@@ -0,0 +1,81 @@
+/* Test Utilities */
+
+kutty.logAll();
+
+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();
+ for (var i = fragment.childNodes.length - 1; i >= 0; i--) {
+ var child = fragment.childNodes[i];
+ kutty.processElement(child);
+ wa.appendChild(child);
+ }
+ return wa.lastChild;
+ }
+ 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 makeServer(){
+ var server = sinon.fakeServer.create();
+ server.fakeHTTPMethods = true;
+ server.getHTTPMethod = function(xhr) {
+ return xhr.requestHeaders['X-HTTP-Method-Override'] || xhr.method;
+ }
+ 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;
+}