diff js/modules/mocks.js @ 69:51c1829956d9

Added mock XHR object and a simple bugzilla ajax test
author Atul Varma <avarma@mozilla.com>
date Sun, 25 Apr 2010 11:41:55 -0700
parents
children 544d339d2b4c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/js/modules/mocks.js	Sun Apr 25 11:41:55 2010 -0700
@@ -0,0 +1,56 @@
+Require.modules["mocks"] = function(exports, require) {
+  function MockXMLHttpRequest(delegate) {
+    var self = this;
+
+    var listeners = {
+      "load": [],
+      "progress": [],
+      "error": [],
+      "abort": []
+    };
+
+    function verifyEventType(eventType) {
+      if (!(eventType in listeners))
+        throw new Error("unknown event type: " + eventType);
+    }
+
+    self.addEventListener = function(eventType, handler, useCapture) {
+      verifyEventType(eventType);
+      listeners[eventType].push(handler);
+      delegate("addEventListener", [eventType, handler, useCapture]);
+    };
+
+    self.removeEventListener = function(eventType, handler, useCapture) {
+      verifyEventType(eventType);
+      var index = listeners[eventType].indexOf(handler);
+      if (index == -1)
+        throw new Error("handler not registered for event: " + eventType);
+      listeners[eventType].splice(index, 1);
+      delegate("removeEventListener", [eventType, handler, useCapture]);
+    };
+
+    self.setRequestHeader = function(header, value) {
+      delegate("setRequestHeader", [header, value]);
+    };
+
+    self.send = function(data) {
+      delegate("send", [data]);
+    };
+
+    self.open = function open(method, url) {
+      delegate("open", [method, url]);
+    };
+
+    self.mockTriggerEvent = function(event) {
+      verifyEventType(event.type);
+      listeners.forEach(
+        function(listener) {
+          listener(event);
+        });
+    };
+  }
+
+  exports.xhr = function xhr(delegate) {
+    return new MockXMLHttpRequest(delegate);
+  };
+};