annotate js/modules/mocks.js @ 100:c486d35fad27

added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
author Atul Varma <avarma@mozilla.com>
date Tue, 27 Apr 2010 23:06:29 -0700
parents 544d339d2b4c
children 00b02ba5236c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
1 Require.modules["mocks/cache"] = function(exports, require) {
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
2 function copy(obj) {
100
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
3 if (typeof(obj) == "function")
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
4 throw new Error("can't store functions");
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
5 if (typeof(obj) == "object")
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
6 return JSON.parse(JSON.stringify(obj));
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
7 return obj;
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
8 }
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
9
100
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
10 function MockCache(delegate) {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
11 this.delegate = delegate;
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
12 this.cache = {};
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
13 };
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
14
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
15 MockCache.prototype = {
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
16 get: function get(key) {
100
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
17 this.delegate("get", [key]);
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
18 if (key in this.cache)
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
19 return copy(this.cache[key]);
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
20 return null;
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
21 },
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
22 set: function set(key, value) {
100
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
23 this.delegate("set", [key, value]);
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
24 this.cache[key] = copy(value);
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
25 },
100
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
26 clear: function clear() {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
27 this.delegate("clear", []);
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
28 this.cache = {};
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
29 }
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
30 };
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
31
100
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
32 exports.create = function create(delegate) {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
33 return new MockCache(delegate);
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
34 };
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
35 };
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
36
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
37 Require.modules["mocks/bugzilla/trivial"] = function(exports, require) {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
38 var bug = {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
39 'summary': 'Application destroys computer on startup',
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
40 'last_change_time': '2010-04-13T18:02:00Z',
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
41 'status': 'NEW',
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
42 'priority': 'P1',
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
43 'severity': 'blocker',
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
44 'id': '558680'
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
45 };
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
46
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
47 var user = {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
48 'email': 'john@doe.com',
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
49 'real_name': 'John Doe',
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
50 'name': 'john@doe.com'
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
51 };
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
52
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
53 var config = {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
54 product: {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
55 foo: {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
56 component: {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
57 caching: {},
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
58 passwords: {}
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
59 }
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
60 },
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
61 bar: {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
62 component: {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
63 "help system": {},
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
64 "curmudgeonry": {}
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
65 }
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
66 }
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
67 }
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
68 };
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
69
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
70 exports.makeAjaxImpl = function makeAjaxImpl(delegate, setTimeout) {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
71 return function ajaxImpl(options) {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
72 var authenticated = false;
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
73 if (options.data && options.data.username) {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
74 if (!(options.data.username == 'john@doe.com' &&
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
75 options.data.password == 'test'))
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
76 return {error: true, message: "wrong password, yo!"};
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
77 authenticated = true;
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
78 }
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
79 switch (options.url) {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
80 case "/bug":
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
81 if (!('resolution' in options.data))
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
82 return {bugs: [bug]};
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
83 return {bugs: []};
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
84 case "/configuration":
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
85 return config;
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
86 case "/user":
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
87 if (!authenticated)
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
88 return {error: true, message: "needs login, yo!"};
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
89 if (user.email.indexOf(options.data.match) != -1 ||
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
90 user.real_name.indexOf(options.data.match) != -1)
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
91 return {users: [user]};
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
92 return {users: []};
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
93 default:
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
94 throw new Error("unexpected url: " + options.url);
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
95 }
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
96 };
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
97 };
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
98 };
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
100 Require.modules["mocks/bugzilla"] = function(exports, require) {
100
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
101 const DEFAULT_RESPONSE_TIME = 500;
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
102
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
103 function response(delegate, obj, time) {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
104 if (time === undefined)
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
105 time = DEFAULT_RESPONSE_TIME;
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
106
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
107 function xhrDelegate(method, args) {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
108 delegate("xhr." + method, args);
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
109 }
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
110
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
111 var req = require("mocks/xhr").create(xhrDelegate);
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
112
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
113 require("window").setTimeout(
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
114 function() {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
115 req.responseText = JSON.stringify(obj);
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
116 req.status = 200;
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
117 req.statusText = "OK";
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
118 req.mockTriggerEvent({type: "load", target: req});
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
119 },
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
120 time
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
121 );
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
122 return req;
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
123 }
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
124
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
125 exports.create = function create(Bugzilla, ajaxImpl, delegate) {
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
126 function MockBugzilla() {
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
127 this.ajax = function ajax(options) {
100
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
128 var obj = ajaxImpl(options, exports);
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
129 var req = response(delegate, obj);
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
130 req.addEventListener(
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
131 "load",
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
132 function onLoad() {
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
133 var response = JSON.parse(req.responseText);
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
134 if (!response.error)
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
135 options.success(response);
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
136 },
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
137 false
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
138 );
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
139 return req;
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
140 };
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
141 };
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
142
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
143 MockBugzilla.prototype = Bugzilla;
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
144
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
145 return new MockBugzilla();
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
146 };
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
147 };
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
148
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
149 Require.modules["mocks/xhr"] = function(exports, require) {
69
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
150 function MockXMLHttpRequest(delegate) {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
151 var self = this;
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
152
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
153 var listeners = {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
154 "load": [],
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
155 "progress": [],
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
156 "error": [],
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
157 "abort": []
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
158 };
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
159
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
160 function verifyEventType(eventType) {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
161 if (!(eventType in listeners))
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
162 throw new Error("unknown event type: " + eventType);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
163 }
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
164
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
165 self.addEventListener = function(eventType, handler, useCapture) {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
166 verifyEventType(eventType);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
167 listeners[eventType].push(handler);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
168 delegate("addEventListener", [eventType, handler, useCapture]);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
169 };
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
170
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
171 self.removeEventListener = function(eventType, handler, useCapture) {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
172 verifyEventType(eventType);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
173 var index = listeners[eventType].indexOf(handler);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
174 if (index == -1)
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
175 throw new Error("handler not registered for event: " + eventType);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
176 listeners[eventType].splice(index, 1);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
177 delegate("removeEventListener", [eventType, handler, useCapture]);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
178 };
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
179
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
180 self.setRequestHeader = function(header, value) {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
181 delegate("setRequestHeader", [header, value]);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
182 };
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
183
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
184 self.send = function(data) {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
185 delegate("send", [data]);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
186 };
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
187
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
188 self.open = function open(method, url) {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
189 delegate("open", [method, url]);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
190 };
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
191
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
192 self.mockTriggerEvent = function(event) {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
193 verifyEventType(event.type);
100
c486d35fad27 added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents: 99
diff changeset
194 listeners[event.type].forEach(
69
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
195 function(listener) {
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
196 listener(event);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
197 });
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
198 };
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
199 }
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
200
99
544d339d2b4c Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents: 69
diff changeset
201 exports.create = function create(delegate) {
69
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
202 return new MockXMLHttpRequest(delegate);
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
203 };
51c1829956d9 Added mock XHR object and a simple bugzilla ajax test
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
204 };