[app] Select 'transfer.toFlow'
[abstract.git] / app / aaTestAccountViews.js
blob042f269211c9d4635281534535c9514d57d5c3f3
1 /* vim:set ts=2 sw=2 sts=2 et cindent tw=79 ft=javascript: */
2 /*
3  * Copyright (C) 2007 Sergey Yanovich <ynvich@gmail.com>
4  *
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.
9  *
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.
14  *
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.
19  */
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");
29  * Module entry point
30  * The NSGetModule function is the magic entry point that XPCOM uses to find
31  * what XPCOM components this module provides
32  */
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;
45 function ModuleInit()
47   this._name = moduleName;
48   this._CID = Components.ID(moduleCID);
49   this._contractID = moduleContractID;
51   /*  0 */
52   this._add(account_page_CID, account_page_contractID, account_page_name,
53       account_page_test, account_page_check);
54   /*  1 */
55   this._add(transcript_page_CID, transcript_page_contractID,
56       transcript_page_name, transcript_page_test, transcript_page_check);
57   /*  2 */
58   this._add(transcript_flow_CID, transcript_flow_contractID, transcript_flow_name,
59       transcript_flow_test, flow_select_check);
60   /*  3 */
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;
64   /*  4 */
65   this._repeat(2);
66   /*  5 */
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;
70   /*  6 */
71   this._add(transcript_load_CID, transcript_load_contractID,
72       transcript_load_name, transcript_load_test);
73   /*  7 */
74   this._add(transfer_page_CID, transfer_page_contractID,
75       transfer_page_name, transfer_page_test, transfer_page_check);
76   /*  8 */
77   this._add(transfer_from_CID, transfer_from_contractID, transfer_from_name,
78       transfer_from_test, flow_select_check);
79   /*  9 */
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;
84   /* 10 */
85   this._repeat(8);
86   /* 11 */
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;
90   /* 12 */
91   this._add(transfer_to_CID, transfer_to_contractID, transfer_to_name,
92       transfer_to_test, flow_select_check);
93   /* 13 */
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;
98   /* 14 */
99   this._repeat(12);
100   /* 15 */
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");
123   if (!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)
214   flow_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);
260   
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;
324   var result = true;
325   if (! wnd) {
326     runner.addJSFailure("[transfer sync] getting window");
327     return false;
328   }
330   if (! wnd.gFact) {
331     runner.addJSFailure("[transfer sync] getting fact object");
332     return false;
333   }
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");
338     result = false;
339   }
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);
345     result = false;
346   }
348   return result;
351 function transfer_check(runner)
353   var result = true;
354   if (getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
355       .currentURI.spec != "chrome://abstract/content/transfer.xul") {
356     runner.addJSFailure(" [transfer] wrong xul document");
357     return false;
358   }
359   if (! transfer_sync_check(runner)) {
360     runner.addJSFailure(" [transfer] page out of sync");
361     result = false;
362   }
364   return result;
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);
373   junk.tag = "junk";
374   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
375   wnd.gFact.takeFrom = junk;
376   wnd.gFact.giveTo = junk;
377   wnd.updateToFlow();
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);