1 /* vim:set ts=2 sw=2 sts=2 et cindent tw=79 ft=javascript: */
3 * Copyright (C) 2007 Sergey Yanovich <ynvich@gmail.com>
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation; either version 2 of the
8 * License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
15 * You should have received a copy of the GNU General Public
16 * License along with this program; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 * Boston, MA 02111-1307, USA.
21 const nsCI = Components.interfaces
22 const moduleName = "aaTestAccountViews";
23 const moduleCID = "{afd38c04-819b-4823-ad6a-22c6d05b3774}";
24 const moduleContractID = "@aasii.org/abstract/test/vc-accounts;1";
26 Components.utils.import("resource:///modules/aaTestVC.jsm");
30 * The NSGetModule function is the magic entry point that XPCOM uses to find
31 * what XPCOM components this module provides
33 function NSGetModule(comMgr, fileSpec)
35 var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
36 .getService(Components.interfaces.mozIJSSubScriptLoader);
37 loader.loadSubScript("resource:///modules/nsTestFrame.jsm");
39 var aaVCTestModule = new JSTestModule();
40 aaVCTestModule.init = ModuleInit;
41 aaVCTestModule.init();
42 return aaVCTestModule;
47 this._name = moduleName;
48 this._CID = Components.ID(moduleCID);
49 this._contractID = moduleContractID;
52 this._add(account_page_CID, account_page_contractID, account_page_name,
53 account_page_test, account_page_check);
55 this._add(transcript_page_CID, transcript_page_contractID,
56 transcript_page_name, transcript_page_test, transcript_page_check);
58 this._add(transcript_flow_CID, transcript_flow_contractID, transcript_flow_name,
59 transcript_flow_test, flow_select_check);
61 this._add(tf_discard_CID, tf_discard_contractID, tf_discard_name,
62 flow_discard_test, transcript_flow_discard_check);
63 this._tests[3].instance.item = 0;
67 this._add(tf_submit_CID, tf_submit_contractID, tf_submit_name,
68 flow_submit_test, transcript_flow_submit_check);
69 this._tests[5].instance.item = 2;
71 this._add(transcript_load_CID, transcript_load_contractID,
72 transcript_load_name, transcript_load_test);
74 this._add(transfer_page_CID, transfer_page_contractID,
75 transfer_page_name, transfer_page_test, transfer_page_check);
77 this._add(transfer_from_CID, transfer_from_contractID, transfer_from_name,
78 transfer_from_test, flow_select_check);
80 this._add(transfer_from_discard_CID, transfer_from_discard_contractID,
81 transfer_from_discard_name, flow_discard_test,
82 transfer_from_discard_check);
83 this._tests[9].instance.item = 0;
87 this._add(transfer_from_submit_CID, transfer_from_submit_contractID,
88 transfer_from_submit_name, flow_submit_test, transfer_from_submit_check);
89 this._tests[11].instance.item = 3;
91 this._add(transfer_to_CID, transfer_to_contractID, transfer_to_name,
92 transfer_to_test, flow_select_check);
94 this._add(transfer_to_discard_CID, transfer_to_discard_contractID,
95 transfer_to_discard_name, flow_discard_test,
96 transfer_to_discard_check);
97 this._tests[13].instance.item = 0;
101 this._add(transfer_to_submit_CID, transfer_to_submit_contractID,
102 transfer_to_submit_name, flow_submit_test, transfer_to_submit_check);
103 this._tests[15].instance.item = 4;
106 /* Module-specific Defines and Utilities */
107 const contentId = "content";
109 /* Account Page Test */
110 const account_page_contractID = "@aasii.org/abstract/test/account-balance;1";
111 const account_page_name = "aaAccountPageTest";
112 const account_page_CID = Components.ID("{3391fcd8-e122-4e31-9162-f114fe2d843d}");
114 function account_page_test(runner)
116 runner.doCommand("cmd_report_balances");
117 runner.watchWindow = getFrame(runner).contentWindow;
120 function account_page_check(runner)
122 var tree = getElement(runner, "balances.tree");
124 runner.addJSFailure("[balances page] failed");
125 if (tree.view.getCellText(0,tree.columns[0]) != "equity share 2")
126 runner.addJSFailure("balance.tree.line1.col1 failed");
127 if (tree.view.getCellText(0,tree.columns[1]) != "J. Dow")
128 runner.addJSFailure("balance.tree.line1.col2 failed");
129 if (tree.view.getCellText(0,tree.columns[2]) != "AASI share")
130 runner.addJSFailure("balance.tree.line1.col3 failed");
131 if (tree.view.getCellText(0,tree.columns[3]) != "")
132 runner.addJSFailure("balance.tree.line3.col4 failed");
133 if (tree.view.getCellText(0,tree.columns[4]) != "100000.00")
134 runner.addJSFailure("balance.tree.line1.col5 failed");
135 if (tree.view.getCellText(2,tree.columns[3]) != "172000.00")
136 runner.addJSFailure("balance.tree.line3.col4 failed");
139 /* Transcript Page Test */
140 const transcript_page_contractID = "@aasii.org/abstract/test/account-transcript;1";
141 const transcript_page_name = "aaTranscriptPageTest";
142 const transcript_page_CID = Components.ID("{d7a1753e-7d74-4f8a-940d-317d37c369ee}");
144 function transcript_page_test(runner)
146 runner.doCommand("cmd_report_transcript");
147 runner.watchWindow = getFrame(runner).contentWindow;
150 function transcript_check(runner)
152 if (! getElement(runner, "transcript.tree"))
153 runner.addJSFailure("[transcript page] tree failed");
154 if (! getElement(runner, "filter.flow"))
155 runner.addJSFailure("[transcript page] flow link failed");
158 function transcript_page_check(runner)
160 transcript_check(runner);
161 var tree = getElement(runner, "transcript.tree");
162 // XXX 403202 'Unflexing' the tree speeds up reflow significantly
163 if (tree && tree.hasAttribute("flex"))
164 tree.removeAttribute("flex");
166 getElement(runner, "filter.dateFrom").value = "2007-08-29";
167 sendOnChange(getElement(runner, "filter.dateFrom"));
168 getElement(runner, "filter.dateTo").value = "2007-08-30";
169 sendOnChange(getElement(runner, "filter.dateTo"));
170 if (getElement(runner, "filter.cancel").hasAttribute("collapsed"))
171 runner.addJSFailure("[transcript page] 'change' command");
174 /* ask for flow from transcript page */
175 const transcript_flow_contractID = "@aasii.org/test/transcript-flow;1";
176 const transcript_flow_name = "aaVCTranscriptFlowTest";
177 const transcript_flow_CID = Components.ID("{b4fe65f6-c55e-491c-a039-27c0beff12cc}");
179 function transcript_flow_test(runner)
181 sendOnClick(getElement(runner, "filter.flow"));
182 runner.watchWindow = getFrame(runner).contentWindow;
185 const tf_discard_contractID = "@aasii.org/test/transcript-flow-discard;1";
186 const tf_discard_name = "aaVCTranscriptFlowDiscardTest";
187 const tf_discard_CID = Components.ID("{a122d947-3fb2-4796-87fe-22c67706bd9a}");
189 function transcript_flow_discard_check(runner)
191 transcript_check(runner);
192 if (getElement(runner, "filter.flow").value != "click to choose")
193 runner.addJSFailure("[transcript->flow] discard failed");
194 if (! session_buffer_check(runner))
195 runner.addJSFailure("session buffer not cleared");
198 const tf_submit_contractID = "@aasii.org/test/transcript-flow-submit;1";
199 const tf_submit_name = "aaVCTranscriptFlowSubmitTest";
200 const tf_submit_CID = Components.ID("{3197a8bb-1fd1-453e-98d8-6bc7996552a5}");
202 function transcript_flow_submit_check(runner)
204 transcript_check(runner);
205 if (! session_buffer_check(runner))
206 runner.addJSFailure("session buffer not cleared");
207 if (getElement(runner, "filter.flow").value != "bank account 1")
208 runner.addJSFailure("[transcript->flow] submit failed");
211 /* submit/discard from flow page */
212 function flow_select_check(runner)
215 var tree = getElement(runner, "page1.tree");
216 // XXX 403202 'Unflexing' the tree speeds up reflow significantly
217 if (tree && tree.hasAttribute("flex"))
218 tree.removeAttribute("flex");
220 if (getAnnoElement(runner, "header", "header.discard")
221 .getAttribute("collapsed") == "true")
222 runner.addJSFailure("flow.discard button should be visible");
223 if (getAnnoElement(runner, "header", "header.submit")
224 .getAttribute("collapsed") == "true")
225 runner.addJSFailure("flow.submit button should be visible");
226 if (getElement(runner, "cmd_page1_discard")
227 .getAttribute("disabled") == "true")
228 runner.addJSFailure("flow_discard command should be enabled");
229 if (getElement(runner, "cmd_page1_submit")
230 .getAttribute("disabled") == "true")
231 runner.addJSFailure("flow_submit command should be enabled");
234 function flow_discard_test(runner)
236 getElement(runner,"page1.tree").view.selection.select(this.item);
237 runner.doCommand("cmd_page1_discard");
238 runner.watchWindow = getFrame(runner).contentWindow;
241 function flow_submit_test(runner)
243 getElement(runner,"page1.tree").view.selection.select(this.item);
244 runner.doCommand("cmd_page1_submit");
245 runner.watchWindow = getFrame(runner).contentWindow;
248 /* Transcript Load Test */
249 const transcript_load_contractID = "@aasii.org/abstract/test/transcript-load;1";
250 const transcript_load_name = "aaTranscriptLoadTest";
251 const transcript_load_CID = Components.ID("{335e1a8e-f8a0-4a9d-850b-0404cd2db9e5}");
253 function transcript_load_test(runner)
255 var loadLnk = getElement(runner, "transcript.load");
256 var startDate = getElement(runner, "filter.dateFrom");
257 var endDate = getElement(runner, "filter.dateTo");
258 var tree = getElement(runner, "transcript.tree");
259 var view = tree.view.QueryInterface(nsCI.nsITreeView);
261 sendOnClick(loadLnk);
263 if (getElement(runner, "filter.group").getAttribute("collapsed") != "true")
264 runner.addJSFailure("[transcript load] filter not hidden");
266 if (getElement(runner, "header.flow").value != "bank account 1")
267 runner.addJSFailure("[transcript load] flow not set");
268 if (getElement(runner, "header.dateFrom").value != "2007-08-29")
269 runner.addJSFailure("[transcript load] [1] wrong 'from' date");
270 if (getElement(runner, "header.sumDebitFrom").value != "0.00")
271 runner.addJSFailure("[transcript load] [1] wrong 'from' debit");
272 if (getElement(runner, "header.sumCreditFrom").value != "0.00")
273 runner.addJSFailure("[transcript load] [1] wrong 'from' credit");
274 if (getElement(runner, "header.dateTo").value != "2007-08-30")
275 runner.addJSFailure("[transcript load] [1] wrong 'to' date");
276 if (getElement(runner, "header.sumDebitTo").value != "172000.00")
277 runner.addJSFailure("[transcript load] [1] wrong 'to' debit");
278 if (getElement(runner, "header.sumCreditTo").value != "0.00")
279 runner.addJSFailure("[transcript load] [1] wrong 'to' credit");
281 if (view.getCellText(0,tree.columns[0]) != "2007-08-29")
282 runner.addJSFailure("transcript.tree.line1.col1 failed");
283 if (view.getCellText(1,tree.columns[0]) != "2007-08-29")
284 runner.addJSFailure("transcript.tree.line2.col1 failed");
285 if (view.getCellText(2,tree.columns[0]) != "2007-08-30")
286 runner.addJSFailure("transcript.tree.line3.col1 failed");
288 if (view.getCellText(0,tree.columns[1]) != "equity share 2")
289 runner.addJSFailure("transcript.tree.line1.col2 failed");
290 if (view.getCellText(1,tree.columns[1]) != "equity share 1")
291 runner.addJSFailure("transcript.tree.line2.col2 failed");
292 if (view.getCellText(2,tree.columns[1]) != "purchase contract 1")
293 runner.addJSFailure("transcript.tree.line3.col2 failed");
295 if (view.getCellText(0,tree.columns[2]) != "100000.00")
296 runner.addJSFailure("transcript.tree.line1.col3 failed");
297 if (view.getCellText(1,tree.columns[2]) != "142000.00")
298 runner.addJSFailure("transcript.tree.line2.col3 failed");
299 if (view.getCellText(2,tree.columns[2]) != "")
300 runner.addJSFailure("transcript.tree.line3.col3 failed");
302 if (view.getCellText(0,tree.columns[3]) != "")
303 runner.addJSFailure("transcript.tree.line1.col4 failed");
304 if (view.getCellText(1,tree.columns[3]) != "")
305 runner.addJSFailure("transcript.tree.line2.col4 failed");
306 if (view.getCellText(2,tree.columns[3]) != "70000.00")
307 runner.addJSFailure("transcript.tree.line3.col4 failed");
310 /* Transfer Page Test */
311 const transfer_page_contractID = "@aasii.org/abstract/test/account-transfer;1";
312 const transfer_page_name = "aaTransferPageTest";
313 const transfer_page_CID = Components.ID("{950daefb-95ba-4960-a11a-b88af6cf6cad}");
315 function transfer_page_test(runner)
317 runner.doCommand("cmd_process_transfer");
318 runner.watchWindow = getFrame(runner).contentWindow;
321 function transfer_sync_check(runner)
323 var wnd = getFrame(runner).contentWindow.wrappedJSObject;
326 runner.addJSFailure("[transfer sync] getting window");
331 runner.addJSFailure("[transfer sync] getting fact object");
335 if (getElement(runner, "transfer.fromFlow").value != (wnd.gFact.takeFrom ?
336 wnd.gFact.takeFrom.tag : "click to choose")) {
337 runner.addJSFailure(" 'fromFlow.tag' is wrong");
341 if (getElement(runner, "transfer.toFlow").value != (wnd.gFact.giveTo ?
342 wnd.gFact.giveTo.tag : "click to choose")) {
343 runner.addJSFailure(" 'toFlow.tag' is wrong: " + getElement(runner,
344 "transfer.toFlow").value);
351 function transfer_check(runner)
354 if (getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
355 .currentURI.spec != "chrome://abstract/content/transfer.xul") {
356 runner.addJSFailure(" [transfer] wrong xul document");
359 if (! transfer_sync_check(runner)) {
360 runner.addJSFailure(" [transfer] page out of sync");
367 function transfer_page_check(runner)
369 if (! transfer_check(runner))
370 runner.addJSFailure("[transfer page] wrong initialization");
372 var junk = Components.classes["@aasii.org/base/flow;1"].createInstance(nsCI.aaIFlow);
374 var wnd = getFrame(runner).contentWindow.wrappedJSObject;
375 wnd.gFact.takeFrom = junk;
376 wnd.gFact.giveTo = junk;
380 /* ask for 'from' flow from transfer page */
381 const transfer_from_contractID = "@aasii.org/test/transfer-from;1";
382 const transfer_from_name = "aaVCTransferFromTest";
383 const transfer_from_CID = Components.ID("{7ad5abf7-53b9-468d-b50c-4d9614a9dc14}");
385 function transfer_from_test(runner)
387 sendOnClick(getElement(runner, "transfer.fromFlow"));
388 runner.watchWindow = getFrame(runner).contentWindow;
391 const transfer_from_discard_contractID = "@aasii.org/test/transfer-from-discard;1";
392 const transfer_from_discard_name = "aaVCTransferFromDiscardTest";
393 const transfer_from_discard_CID = Components.ID("{ca063e94-1b9c-4e53-bf25-9fa8af605def}");
395 function transfer_from_discard_check(runner)
397 if (! transfer_check(runner))
398 runner.addJSFailure("[transfer->fromFlow] wrong init");
400 if (getElement(runner, "transfer.fromFlow").value != "junk")
401 runner.addJSFailure("[transfer->fromFlow] discard failed");
402 if (! session_buffer_check(runner))
403 runner.addJSFailure("session buffer not cleared");
406 const transfer_from_submit_contractID = "@aasii.org/test/transfer-from-submit;1";
407 const transfer_from_submit_name = "aaVCTransferFromSubmitTest";
408 const transfer_from_submit_CID = Components.ID("{aaf7ec49-e9aa-45a8-b630-56b6659fa6ad}");
410 function transfer_from_submit_check(runner)
412 if (! transfer_check(runner))
413 runner.addJSFailure("[transfer->fromFlow] wrong page init");
415 if (! session_buffer_check(runner))
416 runner.addJSFailure("session buffer not cleared");
417 if (getElement(runner, "transfer.fromFlow").value != "purchase contract 1")
418 runner.addJSFailure("[transfer->fromFlow] submit failed:"
419 + getElement(runner, "transfer.fromFlow").value);
422 /* ask for 'to' flow from transfer page */
423 const transfer_to_contractID = "@aasii.org/test/transfer-to;1";
424 const transfer_to_name = "aaVCTransferToTest";
425 const transfer_to_CID = Components.ID("{3c13bbbd-927b-4b67-be0a-2f80691bed1e}");
427 function transfer_to_test(runner)
429 sendOnClick(getElement(runner, "transfer.toFlow"));
430 runner.watchWindow = getFrame(runner).contentWindow;
433 const transfer_to_discard_contractID = "@aasii.org/test/transfer-to-discard;1";
434 const transfer_to_discard_name = "aaVCTransferToDiscardTest";
435 const transfer_to_discard_CID = Components.ID("{a04d7093-663b-4c24-9c96-028c67b89df3}");
437 function transfer_to_discard_check(runner)
439 if (! transfer_check(runner))
440 runner.addJSFailure("[transfer->toFlow] wrong init");
442 if (getElement(runner, "transfer.toFlow").value != "junk")
443 runner.addJSFailure("[transfer->toFlow] discard failed");
444 if (! session_buffer_check(runner))
445 runner.addJSFailure("session buffer not cleared");
448 const transfer_to_submit_contractID = "@aasii.org/test/transfer-to-submit;1";
449 const transfer_to_submit_name = "aaVCTransferToSubmitTest";
450 const transfer_to_submit_CID = Components.ID("{e827d4c8-89c6-4f19-8df3-0bc2c70f658b}");
452 function transfer_to_submit_check(runner)
454 if (! transfer_check(runner))
455 runner.addJSFailure("[transfer->toFlow] wrong page init");
457 if (! session_buffer_check(runner))
458 runner.addJSFailure("session buffer not cleared");
459 if (getElement(runner, "transfer.toFlow").value != "equipment storage 1")
460 runner.addJSFailure("[transfer->toFlow] submit failed:"
461 + getElement(runner, "transfer.toFlow").value);