[app] Set reporting currency (bug #130)
[abstract.git] / app / test / aaTestAccountViews.js
blobe882a04e8e08ee3104b63ee5cb568822d724ae50
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 = 9;
70   /*  6 */
71   this._add(transcript_load_CID, transcript_load_contractID,
72       transcript_load_name, transcript_load_test);
73   /*  7 */
74   this._add(transcript_after_flow_CID, transcript_after_flow_contractID,
75       transcript_after_flow_name, transcript_after_flow_test);
76   /*  8 */
77   this._add(transcript_income_flow_CID, transcript_income_flow_contractID,
78       transcript_income_flow_name, transcript_income_flow_test);
79   /*  9 */
80   this._add(chart_page_CID, chart_page_contractID,
81       chart_page_name, chart_page_test, chart_page_check);
82   /* 10 */
83   this._add(chart_resource_CID, chart_resource_contractID, chart_resource_name,
84       chart_resource_test, resource_select_check);
85   /* 11 */
86   this._add(chart_resource_submit_CID, chart_resource_submit_contractID,
87       chart_resource_submit_name, resource_submit_test,
88       chart_resource_submit_check);
89   this._tests[11].instance.item = 0;
90   /* 12 */
91   this._add(transfer_page_CID, transfer_page_contractID,
92       transfer_page_name, transfer_page_test, transfer_page_check);
93   /* 13 */
94   this._add(transfer_from_CID, transfer_from_contractID, transfer_from_name,
95       transfer_from_test, flow_select_check);
96   /* 14 */
97   this._add(transfer_from_discard_CID, transfer_from_discard_contractID,
98       transfer_from_discard_name, flow_discard_test,
99       transfer_from_discard_check);
100   this._tests[14].instance.item = 0;
101   /* 15 */
102   this._repeat(13);
103   /* 16 */
104   this._add(transfer_from_submit_CID, transfer_from_submit_contractID,
105       transfer_from_submit_name, flow_submit_test, transfer_from_submit_check);
106   this._tests[16].instance.item = 5;
107   /* 17 */
108   this._add(transfer_to_CID, transfer_to_contractID, transfer_to_name,
109       transfer_to_test, flow_select_check);
110   /* 18 */
111   this._add(transfer_to_discard_CID, transfer_to_discard_contractID,
112       transfer_to_discard_name, flow_discard_test,
113       transfer_to_discard_check);
114   this._tests[18].instance.item = 0;
115   /* 19 */
116   this._repeat(17);
117   /* 20 */
118   this._add(transfer_to_submit_CID, transfer_to_submit_contractID,
119       transfer_to_submit_name, flow_submit_test, transfer_to_submit_check);
120   this._tests[20].instance.item = 9;
121   this._tests[20].instance.extra = flow_last_line_check;
122   /* 21 */
123   this._add(transfer_save_CID, transfer_save_contractID,
124       transfer_save_name, transfer_save_test);
125   /* 22 */
126   this._add(add_flow_when_selecting_CID, add_flow_when_selecting_contractID,
127       add_flow_when_selecting_name, transfer_from_test,
128       add_flow_when_selecting_check);
131 /* Module-specific Defines and Utilities */
132 const contentId = "content";
134 /* Account Page Test */
135 const account_page_contractID = "@aasii.org/abstract/test/account-balance;1";
136 const account_page_name = "aaAccountPageTest";
137 const account_page_CID = Components.ID("{3391fcd8-e122-4e31-9162-f114fe2d843d}");
139 function account_page_test(runner)
141   runner.doCommand("cmd_report_balances");
142   runner.watchWindow = getFrame(runner).contentWindow;
145 function account_page_check(runner)
147   var tree = getElement(runner, "balances.tree");
148   var view = tree.view;
149   var date = getElement(runner, "filter.date");
150   date.value = "2007-09-07";
151   sendOnChange(date);
152   if (!tree)
153     runner.addJSFailure("[balances page] failed");
155   if (view.getCellText(0,tree.columns[3]) != "")
156     runner.addJSFailure("transcript.tree.line1.col4 failed");
157   if (view.getCellText(1,tree.columns[3]) != "")
158     runner.addJSFailure("transcript.tree.line2.col4 failed");
159   if (view.getCellText(2,tree.columns[3]) != "1.00")
160     runner.addJSFailure("transcript.tree.line3.col4 failed");
161   if (view.getCellText(3,tree.columns[3]) != "2400.00")
162     runner.addJSFailure("transcript.tree.line4.col4 failed");
163   if (view.getCellText(4,tree.columns[3]) != "1.00")
164     runner.addJSFailure("transcript.tree.line5.col4 failed");
165   if (view.getCellText(5,tree.columns[3]) != "87920.00")
166     runner.addJSFailure("transcript.tree.line6.col4 failed");
168   if (view.getCellText(0,tree.columns[4]) != "10.00")
169     runner.addJSFailure("transcript.tree.line1.col4 failed");
170   if (view.getCellText(1,tree.columns[4]) != "14.20")
171     runner.addJSFailure("transcript.tree.line2.col4 failed");
172   if (view.getCellText(2,tree.columns[4]) != "")
173     runner.addJSFailure("transcript.tree.line3.col4 failed");
174   if (view.getCellText(3,tree.columns[4]) != "")
175     runner.addJSFailure("transcript.tree.line4.col4 failed");
176   if (view.getCellText(4,tree.columns[4]) != "")
177     runner.addJSFailure("transcript.tree.line5.col4 failed");
178   if (view.getCellText(5,tree.columns[4]) != "")
179     runner.addJSFailure("transcript.tree.line6.col4 failed");
181   getElement(runner, "units.mode").selectedIndex = 1;
183   if (tree.view.getCellText(0,tree.columns[0]) != "equity share 2")
184     runner.addJSFailure("balance.tree.line1.col1 failed");
185   if (tree.view.getCellText(0,tree.columns[1]) != "J. Dow")
186     runner.addJSFailure("balance.tree.line1.col2 failed");
187   if (tree.view.getCellText(0,tree.columns[2]) != "AASI share")
188     runner.addJSFailure("balance.tree.line1.col3 failed");
189   if (tree.view.getCellText(0,tree.columns[3]) != "")
190     runner.addJSFailure("balance.tree.line3.col4 failed");
191   if (tree.view.getCellText(0,tree.columns[4]) != "100000.00")
192     runner.addJSFailure("balance.tree.line1.col5 failed");
193   if (tree.view.getCellText(5,tree.columns[3]) != "87920.00")
194     runner.addJSFailure("balance.tree.line3.col4 failed");
196   if (getElement(runner, "footer.sumDebit").value != "242000.00")
197     runner.addJSFailure("balance.totalAssets is wrong: "
198         + getElement(runner, "footer.sumDebit").value);
199   if (getElement(runner, "footer.sumCredit").value != "242000.00")
200     runner.addJSFailure("balance.totalLiabilities is wrong: "
201         + getElement(runner, "footer.sumCredit").value);
204 /* Transcript Page Test */
205 const transcript_page_contractID = "@aasii.org/abstract/test/account-transcript;1";
206 const transcript_page_name = "aaTranscriptPageTest";
207 const transcript_page_CID = Components.ID("{d7a1753e-7d74-4f8a-940d-317d37c369ee}");
209 function transcript_page_test(runner)
211   runner.doCommand("cmd_report_transcript");
212   runner.watchWindow = getFrame(runner).contentWindow;
215 function transcript_check(runner)
217   if (! getElement(runner, "transcript.tree"))
218     runner.addJSFailure("[transcript page] tree failed");
219   if (! getElement(runner, "filter.flow"))
220     runner.addJSFailure("[transcript page] flow link failed");
223 function transcript_page_check(runner)
225   transcript_check(runner);
226   var tree = getElement(runner, "transcript.tree");
227   // XXX 403202 'Unflexing' the tree speeds up reflow significantly
228   if (tree && tree.hasAttribute("flex"))
229     tree.removeAttribute("flex");
231   getElement(runner, "filter.dateFrom").value = "2007-09-05";
232   sendOnChange(getElement(runner, "filter.dateFrom"));
233   getElement(runner, "filter.dateTo").value = "2008-01-08";
234   sendOnChange(getElement(runner, "filter.dateTo"));
235   if (getElement(runner, "filter.cancel").hasAttribute("collapsed"))
236     runner.addJSFailure("[transcript page] 'change' command");
239 /* ask for flow from transcript page */
240 const transcript_flow_contractID = "@aasii.org/test/transcript-flow;1";
241 const transcript_flow_name = "aaVCTranscriptFlowTest";
242 const transcript_flow_CID = Components.ID("{b4fe65f6-c55e-491c-a039-27c0beff12cc}");
244 function transcript_flow_test(runner)
246   sendOnClick(getElement(runner, "filter.flow"));
247   runner.watchWindow = getFrame(runner).contentWindow;
250 const tf_discard_contractID = "@aasii.org/test/transcript-flow-discard;1";
251 const tf_discard_name = "aaVCTranscriptFlowDiscardTest";
252 const tf_discard_CID = Components.ID("{a122d947-3fb2-4796-87fe-22c67706bd9a}");
254 function transcript_flow_discard_check(runner)
256   transcript_check(runner);
257   if (getElement(runner, "filter.flow").value != "click to choose")
258     runner.addJSFailure("[transcript->flow] discard failed");
261 const tf_submit_contractID = "@aasii.org/test/transcript-flow-submit;1";
262 const tf_submit_name = "aaVCTranscriptFlowSubmitTest";
263 const tf_submit_CID = Components.ID("{3197a8bb-1fd1-453e-98d8-6bc7996552a5}");
265 function transcript_flow_submit_check(runner)
267   transcript_check(runner);
268   if (getElement(runner, "filter.flow").value != "forex deal 4")
269     runner.addJSFailure("[transcript->flow] submit failed");
272 /* submit/discard from flow page */
273 function flow_select_check(runner)
275   flow_check(runner);
276   var tree = getElement(runner, "page1.tree");
277   // XXX 403202 'Unflexing' the tree speeds up reflow significantly
278   if (tree && tree.hasAttribute("flex"))
279     tree.removeAttribute("flex");
281   if (getAnnoElement(runner, "header", "header.discard")
282       .getAttribute("collapsed") == "true")
283     runner.addJSFailure("flow.discard button should be visible");
284   if (getAnnoElement(runner, "header", "header.submit")
285       .getAttribute("collapsed") == "true")
286     runner.addJSFailure("flow.submit button should be visible");
287   if (getElement(runner, "cmd_page1_discard")
288       .getAttribute("disabled") == "true")
289     runner.addJSFailure("flow_discard command should be enabled");
290   if (getElement(runner, "cmd_page1_submit")
291       .getAttribute("disabled") == "true")
292     runner.addJSFailure("flow_submit command should be enabled");
295 function flow_discard_test(runner)
297   getElement(runner,"page1.tree").view.selection.select(this.item);
298   runner.doCommand("cmd_page1_discard");
299   runner.watchWindow = getFrame(runner).contentWindow;
302 function flow_submit_test(runner)
304   if (this.item < 0)
305     this.item = getElement(runner, "page1.tree").view.rowCount + this.item;
306   getElement(runner,"page1.tree").view.selection.select(this.item);
307   runner.doCommand("cmd_page1_submit");
308   runner.watchWindow = getFrame(runner).contentWindow;
309   if (this.extra)
310     this.extra(runner);
313 function flow_last_line_check(runner)
315   var tree = getElement(runner, "page1.tree");
316   var view = tree.view;
317   if (view.getCellText(view.rowCount - 1, tree.columns[0])
318       != "profit and loss")
319     runner.addJSFailure("[flow page] wrong tag on the last line");
322 /* Transcript Load Test */
323 const transcript_load_contractID = "@aasii.org/abstract/test/transcript-load;1";
324 const transcript_load_name = "aaTranscriptLoadTest";
325 const transcript_load_CID = Components.ID("{335e1a8e-f8a0-4a9d-850b-0404cd2db9e5}");
327 function transcript_load_test(runner)
329   var loadLnk = getElement(runner, "transcript.load");
330   var startDate = getElement(runner, "filter.dateFrom");
331   var endDate = getElement(runner, "filter.dateTo");
332   var tree = getElement(runner, "transcript.tree");
333   var view = tree.view.QueryInterface(nsCI.nsITreeView);
334   
335   sendOnClick(loadLnk);
337   if (getElement(runner, "filter.group").getAttribute("collapsed") != "true")
338     runner.addJSFailure("[transcript load] filter not hidden");
340   if (getElement(runner, "header.flow").value != "forex deal 4")
341     runner.addJSFailure("[transcript load] wrong flow: "
342         + getElement(runner, "header.flow").value);
343   if (getElement(runner, "header.dateFrom").value != "2007-09-05")
344     runner.addJSFailure("[transcript load] [1] wrong 'from' date");
345   if (getElement(runner, "header.sumDebitFrom").value != "0.00")
346     runner.addJSFailure("[transcript load] [1] wrong 'from' debit");
347   if (getElement(runner, "header.sumCreditFrom").value != "0.00")
348     runner.addJSFailure("[transcript load] [1] wrong 'from' credit");
349   if (getElement(runner, "header.dateTo").value != "2008-01-08")
350     runner.addJSFailure("[transcript load] [1] wrong 'to' date");
351   if (getElement(runner, "header.sumDebitTo").value != "0.00")
352     runner.addJSFailure("[transcript load] [1] wrong 'to' debit");
353   if (getElement(runner, "header.sumCreditTo").value != "0.00")
354     runner.addJSFailure("[transcript load] [1] wrong 'to' credit");
356   if (view.getCellText(0,tree.columns[0]) != "2007-09-05")
357     runner.addJSFailure("transcript.tree.line1.col1 failed");
358   if (view.getCellText(1,tree.columns[0]) != "2007-09-05")
359     runner.addJSFailure("transcript.tree.line2.col1 failed");
360   if (view.getCellText(2,tree.columns[0]) != "2007-09-05")
361     runner.addJSFailure("transcript.tree.line3.col1 failed");
362   if (view.getCellText(3,tree.columns[0]) != "2007-09-05")
363     runner.addJSFailure("transcript.tree.line4.col1 failed");
364   if (view.getCellText(4,tree.columns[0]) != "2007-09-10")
365     runner.addJSFailure("transcript.tree.line5.col1 failed");
366   if (view.getCellText(5,tree.columns[0]) != "2007-09-10")
367     runner.addJSFailure("transcript.tree.line6.col1 failed");
369   if (view.getCellText(0,tree.columns[1]) != "bank account 2")
370     runner.addJSFailure("transcript.tree.line1.col2 failed");
371   if (view.getCellText(1,tree.columns[1]) != "bank account 1")
372     runner.addJSFailure("transcript.tree.line2.col2 failed");
373   if (view.getCellText(2,tree.columns[1]) != "bank account 2")
374     runner.addJSFailure("transcript.tree.line3.col2 failed");
375   if (view.getCellText(3,tree.columns[1]) != "bank account 1")
376     runner.addJSFailure("transcript.tree.line4.col2 failed");
377   if (view.getCellText(4,tree.columns[1]) != "bank account 1")
378     runner.addJSFailure("transcript.tree.line5.col2 failed");
379   if (view.getCellText(5,tree.columns[1]) != "profit and loss")
380     runner.addJSFailure("transcript.tree.line6.col2 failed");
382   if (view.getCellText(0,tree.columns[2]) != "2000.00")
383     runner.addJSFailure("transcript.tree.line1.col3 failed");
384   if (view.getCellText(1,tree.columns[2]) != "")
385     runner.addJSFailure("transcript.tree.line2.col3 failed");
386   if (view.getCellText(2,tree.columns[2]) != "600.00")
387     runner.addJSFailure("transcript.tree.line3.col3 failed");
388   if (view.getCellText(3,tree.columns[2]) != "")
389     runner.addJSFailure("transcript.tree.line4.col3 failed");
390   if (view.getCellText(4,tree.columns[2]) != "")
391     runner.addJSFailure("transcript.tree.line5.col3 failed");
392   if (view.getCellText(5,tree.columns[2]) != "400.00")
393     runner.addJSFailure("transcript.tree.line6.col3 failed");
395   if (view.getCellText(0,tree.columns[3]) != "")
396     runner.addJSFailure("transcript.tree.line1.col4 failed");
397   if (view.getCellText(1,tree.columns[3]) != "87375.00")
398     runner.addJSFailure("transcript.tree.line2.col4 failed");
399   if (view.getCellText(2,tree.columns[3]) != "")
400     runner.addJSFailure("transcript.tree.line3.col4 failed");
401   if (view.getCellText(3,tree.columns[3]) != "3495.00")
402     runner.addJSFailure("transcript.tree.line4.col4 failed");
403   if (view.getCellText(4,tree.columns[3]) != "13980.00")
404     runner.addJSFailure("transcript.tree.line5.col4 failed");
405   if (view.getCellText(5,tree.columns[3]) != "")
406     runner.addJSFailure("transcript.tree.line6.col4 failed");
408   getElement(runner, "units.mode").selectedIndex = 1;
410   if (view.getCellText(0,tree.columns[2]) != "69900.00")
411     runner.addJSFailure("transcript.tree.line1.col3 failed");
412   if (view.getCellText(1,tree.columns[2]) != "")
413     runner.addJSFailure("transcript.tree.line2.col3 failed");
414   if (view.getCellText(2,tree.columns[2]) != "20970.00")
415     runner.addJSFailure("transcript.tree.line3.col3 failed");
416   if (view.getCellText(3,tree.columns[2]) != "")
417     runner.addJSFailure("transcript.tree.line4.col3 failed");
418   if (view.getCellText(4,tree.columns[2]) != "")
419     runner.addJSFailure("transcript.tree.line5.col3 failed");
420   if (view.getCellText(5,tree.columns[2]) != "13980.00")
421     runner.addJSFailure("transcript.tree.line6.col3 failed");
423   if (view.getCellText(0,tree.columns[3]) != "")
424     runner.addJSFailure("transcript.tree.line1.col4 failed");
425   if (view.getCellText(1,tree.columns[3]) != "87375.00")
426     runner.addJSFailure("transcript.tree.line2.col4 failed");
427   if (view.getCellText(2,tree.columns[3]) != "")
428     runner.addJSFailure("transcript.tree.line3.col4 failed");
429   if (view.getCellText(3,tree.columns[3]) != "3495.00")
430     runner.addJSFailure("transcript.tree.line4.col4 failed");
431   if (view.getCellText(4,tree.columns[3]) != "13980.00")
432     runner.addJSFailure("transcript.tree.line5.col4 failed");
433   if (view.getCellText(5,tree.columns[3]) != "")
434     runner.addJSFailure("transcript.tree.line6.col4 failed");
437 /* Tests for Flow-in-Transcript-Selection bug #122 */
438 const transcript_after_flow_contractID = "@aasii.org/abstract/test/trasncript-after-flow;1";
439 const transcript_after_flow_name = "aaTranscriptAfterFlowP1";
440 const transcript_after_flow_CID = Components.ID("{b9c0df9d-6036-43c7-b0b4-d4e2f3092601}");
442 function transcript_after_flow_test(runner)
444   var flows = getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
445     .sessionHistory.createQuery("@aasii.org/storage/load-flow;1")
446     .QueryInterface(nsCI.aaILoadQuery);
447   flows.load();
448   getFrame(runner).contentWindow.wrappedJSObject.gReport.flow = flows
449     .queryElementAt(3, nsCI.aaIFlow);
451   var tree = getElement(runner, "transcript.tree");
452   var view = tree.view.QueryInterface(nsCI.nsITreeView);
453   
454   if (view.getCellText(2,tree.columns[1]) != "bank account 2")
455     runner.addJSFailure("transcript.tree.line3.col2 failed");
458 /* Tests for income-flow display */
459 const transcript_income_flow_contractID = "@aasii.org/abstract/test/trasncript-income-flow;1";
460 const transcript_income_flow_name = "aaTranscriptIncomeFlowP1";
461 const transcript_income_flow_CID = Components.ID("{07f18646-a3be-4ab5-9edd-7b2b899f00b8}");
463 function transcript_income_flow_test(runner)
465   var loadLnk = getElement(runner, "transcript.load");
466   var startDate = getElement(runner, "filter.dateFrom");
467   var endDate = getElement(runner, "filter.dateTo");
468   var tree = getElement(runner, "transcript.tree");
469   var view = tree.view.QueryInterface(nsCI.nsITreeView);
470   
471   getFrame(runner).contentWindow.wrappedJSObject.gReport.flow =
472     Components.classes["@aasii.org/base/income-flow;1"]
473     .createInstance(nsCI.aaIFlow);
475   startDate.value = "2007-08-28";
476   endDate.value = "2007-09-10";
478   sendOnClick(loadLnk);
480   if (getElement(runner, "header.dateFrom").value != "2007-08-28")
481     runner.addJSFailure("[transcript load] [2] wrong 'from' date");
482   if (getElement(runner, "header.sumDebitFrom").value != "0.00")
483     runner.addJSFailure("[transcript load] [2] wrong 'from' debit");
484   if (getElement(runner, "header.sumCreditFrom").value != "0.00")
485     runner.addJSFailure("[transcript load] [2] wrong 'from' credit");
486   if (getElement(runner, "header.dateTo").value != "2007-09-10")
487     runner.addJSFailure("[transcript load] [2] wrong 'to' date");
488   if (getElement(runner, "header.sumDebitTo").value != "0.00")
489     runner.addJSFailure("[transcript load] [2] wrong 'to' debit");
490   if (getElement(runner, "header.sumCreditTo").value != "300.00")
491     runner.addJSFailure("[transcript load] [2] wrong 'to' credit");
492   if (view.rowCount != 8)
493     runner.addJSFailure("[transcript load] [2] line count");
495   if (view.getCellText(0,tree.columns[0]) != "2007-08-31")
496     runner.addJSFailure("transcript.tree.line1.col1 failed");
497   if (view.getCellText(1,tree.columns[0]) != "2007-08-31")
498     runner.addJSFailure("transcript.tree.line2.col1 failed");
499   if (view.getCellText(2,tree.columns[0]) != "2007-09-05")
500     runner.addJSFailure("transcript.tree.line3.col1 failed");
501   if (view.getCellText(3,tree.columns[0]) != "2007-09-05")
502     runner.addJSFailure("transcript.tree.line3.col1 failed");
503   if (view.getCellText(4,tree.columns[0]) != "2007-09-06")
504     runner.addJSFailure("transcript.tree.line3.col1 failed");
505   if (view.getCellText(5,tree.columns[0]) != "2007-09-07")
506     runner.addJSFailure("transcript.tree.line3.col1 failed");
507   if (view.getCellText(6,tree.columns[0]) != "2007-09-10")
508     runner.addJSFailure("transcript.tree.line3.col1 failed");
509   if (view.getCellText(7,tree.columns[0]) != "2007-09-10")
510     runner.addJSFailure("transcript.tree.line3.col1 failed");
512   if (view.getCellText(0,tree.columns[1]) != "forex deal 2")
513     runner.addJSFailure("transcript.tree.line1.col2 failed");
514   if (view.getCellText(1,tree.columns[1]) != "rented office 1")
515     runner.addJSFailure("transcript.tree.line2.col2 failed");
516   if (view.getCellText(2,tree.columns[1]) != "forex deal 4")
517     runner.addJSFailure("transcript.tree.line3.col2 failed");
518   if (view.getCellText(3,tree.columns[1]) != "forex deal 4")
519     runner.addJSFailure("transcript.tree.line3.col2 failed");
520   if (view.getCellText(4,tree.columns[1]) != "bank account 1")
521     runner.addJSFailure("transcript.tree.line3.col2 failed");
522   if (view.getCellText(5,tree.columns[1]) != "bank account 1")
523     runner.addJSFailure("transcript.tree.line3.col2 failed");
524   if (view.getCellText(6,tree.columns[1]) != "bank account 2")
525     runner.addJSFailure("transcript.tree.line3.col2 failed");
526   if (view.getCellText(7,tree.columns[1]) != "forex deal 4")
527     runner.addJSFailure("transcript.tree.line3.col2 failed");
529   if (view.getCellText(0,tree.columns[2]) != "")
530     runner.addJSFailure("transcript.tree.line1.col3 failed");
531   if (view.getCellText(1,tree.columns[2]) != "2000.00")
532     runner.addJSFailure("transcript.tree.line2.col3 failed");
533   if (view.getCellText(2,tree.columns[2]) != "")
534     runner.addJSFailure("transcript.tree.line3.col3 failed");
535   if (view.getCellText(3,tree.columns[2]) != "")
536     runner.addJSFailure("transcript.tree.line3.col3 failed");
537   if (view.getCellText(4,tree.columns[2]) != "50.00")
538     runner.addJSFailure("transcript.tree.line3.col3 failed");
539   if (view.getCellText(5,tree.columns[2]) != "")
540     runner.addJSFailure("transcript.tree.line3.col3 failed");
541   if (view.getCellText(6,tree.columns[2]) != "13680.00")
542     runner.addJSFailure("transcript.tree.line3.col3 failed");
543   if (view.getCellText(7,tree.columns[2]) != "")
544     runner.addJSFailure("transcript.tree.line3.col3 failed");
546   if (view.getCellText(0,tree.columns[3]) != "50.00")
547     runner.addJSFailure("transcript.tree.line1.col4 failed");
548   if (view.getCellText(1,tree.columns[3]) != "")
549     runner.addJSFailure("transcript.tree.line2.col4 failed");
550   if (view.getCellText(2,tree.columns[3]) != "1500.00")
551     runner.addJSFailure("transcript.tree.line3.col4 failed");
552   if (view.getCellText(3,tree.columns[3]) != "450.00")
553     runner.addJSFailure("transcript.tree.line3.col4 failed");
554   if (view.getCellText(4,tree.columns[3]) != "")
555     runner.addJSFailure("transcript.tree.line3.col4 failed");
556   if (view.getCellText(5,tree.columns[3]) != "50.00")
557     runner.addJSFailure("transcript.tree.line3.col4 failed");
558   if (view.getCellText(6,tree.columns[3]) != "")
559     runner.addJSFailure("transcript.tree.line3.col4 failed");
560   if (view.getCellText(7,tree.columns[3]) != "13980.00")
561     runner.addJSFailure("transcript.tree.line3.col4 failed");
564 /* Chart Page Test */
565 const chart_page_contractID = "@aasii.org/abstract/test/account-chart;1";
566 const chart_page_name = "aaChartPageTest";
567 const chart_page_CID = Components.ID("{9166dd77-6add-4104-a75e-cbdc41c6d3df}");
569 function chart_page_test(runner)
571   runner.doCommand("cmd_manage_chart");
572   runner.watchWindow = getFrame(runner).contentWindow;
575 function chart_sync_check(runner)
577   var result = true;
578   var quote = getFrame(runner).contentWindow.wrappedJSObject.gView.quote;
579   if (! quote) {
580     runner.addJSFailure(" no quote object");
581     return false;
582   }
584   if (quote.resource && quote.resource.tag
585       != getElement(runner, "chart.resource").value)
586     runner.addJSFailure(" quote.resource is wrong");
588   try {
589     var time = new Date(quote.time / 1000);
590     if (getElement(runner, "chart.date").value != time
591         .toLocaleFormat('%Y-%m-%d')) {
592       runner.addJSFailure("  'date' is wrong: " + getElement(runner,
593             "chart.date").value + " - " + time.toLocaleFormat('%Y-%m-%d'));
594       result = false;
595     }
596   } catch (e) {
597     runner.addJSFailure(" date is wrong:" + e.message);
598     result = false;
599   }
601   return result;
604 function chart_check(runner)
606   var result = true;
607   if (getFrame(runner).contentWindow.location.href !=
608       "chrome://abstract/content/chart.xul") {
609     runner.addJSFailure(" [chart] wrong xul document");
610     return false;
611   }
613   if ( ! chart_sync_check(runner) )
614     return false;
616   return result;
619 function chart_page_check(runner)
621   if (! chart_check)
622     runner.addJSFailure("[chart page]");
625 /* ask for resource from chart page */
626 const chart_resource_contractID = "@aasii.org/test/chart-resource;1";
627 const chart_resource_name = "aaVCChartResourceTest";
628 const chart_resource_CID = Components.ID("{0a83a675-ebbd-4796-9147-5a423b83d20b}");
630 function chart_resource_test(runner)
632   sendOnClick(getElement(runner, "chart.resource"));
633   runner.watchWindow = getFrame(runner).contentWindow;
636 const chart_resource_submit_contractID = "@aasii.org/test/chart-resource-submit;1";
637 const chart_resource_submit_name = "aaVCChartResourceSubmitTest";
638 const chart_resource_submit_CID = Components.ID("{5b81d3f1-55a1-4f37-b608-992d8f094741}");
640 function chart_resource_submit_check(runner)
642   if (! chart_check(runner))
643     runner.addJSFailure("[chart->resource] wrong page init");
645   if (getElement(runner, "chart.resource").value != "RUB")
646     runner.addJSFailure("[chart->resource] submit failed: "
647         + getElement(runner, "chart.resource").value);
649   getElement(runner, "chart.date").value = "2007-08-29";
650   sendOnChange(getElement(runner, "chart.date"));
651   if ( ! chart_sync_check(runner))
652     runner.addJSFailure("[chart->date] out of sync");
653   sendOnClick(getElement(runner, "chart.set"));
656 /* Transfer Page Test */
657 const transfer_page_contractID = "@aasii.org/abstract/test/account-transfer;1";
658 const transfer_page_name = "aaTransferPageTest";
659 const transfer_page_CID = Components.ID("{950daefb-95ba-4960-a11a-b88af6cf6cad}");
661 function transfer_page_test(runner)
663   runner.doCommand("cmd_process_transfer");
664   runner.watchWindow = getFrame(runner).contentWindow;
667 function transfer_sync_check(runner)
669   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
670   var result = true;
671   if (! wnd) {
672     runner.addJSFailure("[transfer sync] getting window");
673     return false;
674   }
676   if (! wnd.gFact) {
677     runner.addJSFailure("[transfer sync] getting fact object");
678     return false;
679   }
681   if (getElement(runner, "transfer.fromFlow").value != (wnd.gFact.takeFrom ? 
682         wnd.gFact.takeFrom.tag : "click to choose")) {
683     runner.addJSFailure("  'fromFlow.tag' is wrong:" + getElement(runner,
684           "transfer.fromFlow").value);
685     result = false;
686   }
688   if (getElement(runner, "transfer.toFlow").value != (wnd.gFact.giveTo ? 
689         wnd.gFact.giveTo.tag : "click to choose")) {
690     runner.addJSFailure("  'toFlow.tag' is wrong: " + getElement(runner,
691           "transfer.toFlow").value);
692     result = false;
693   }
695   if (getElement(runner, "transfer.amount").value != wnd.gFact.amount) {
696     runner.addJSFailure("  'amount' is wrong: " + getElement(runner,
697           "transfer.amount").value);
698     result = false;
699   }
701   var time = new Date(wnd.gEvent.time / 1000);
702   if (getElement(runner, "transfer.date").value != time
703       .toLocaleFormat('%Y-%m-%d')) {
704     runner.addJSFailure("  'date' is wrong: " + getElement(runner,
705           "transfer.date").value + " - " + time.toLocaleFormat('%Y-%m-%d'));
706     result = false;
707   }
709   if ((wnd.gTransaction && (getElement(runner, "transfer.value").value
710         != wnd.gTransaction.value.toFixed(2))) || !wnd.gTransaction
711       && (getElement(runner, "transfer.value").value != "")) {
712       runner.addJSFailure("  'value' is wrong: " + getElement(runner,
713             "transfer.value").value);
714       result = false;
715   }
717   return result;
720 function transfer_check(runner)
722   var result = true;
723   if (getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
724       .currentURI.spec != "chrome://abstract/content/transfer.xul") {
725     runner.addJSFailure(" [transfer] wrong xul document");
726     return false;
727   }
728   if (! transfer_sync_check(runner)) {
729     runner.addJSFailure(" [transfer] page out of sync");
730     result = false;
731   }
733   return result;
736 function transfer_page_check(runner)
738   if (! transfer_check(runner))
739     runner.addJSFailure("[transfer page] wrong initialization");
741   if (getElement(runner, "transfer.amount").value != "0")
742     runner.addJSFailure("  'amount' is wrong: " + getElement(runner,
743           "transfer.amount").value);
745   var junk = Components.classes["@aasii.org/base/flow;1"].createInstance(nsCI.aaIFlow);
746   junk.tag = "junk";
747   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
748   wnd.gFact.takeFrom = junk;
749   wnd.gFact.giveTo = junk;
752 /* ask for 'from' flow from transfer page */
753 const transfer_from_contractID = "@aasii.org/test/transfer-from;1";
754 const transfer_from_name = "aaVCTransferFromTest";
755 const transfer_from_CID = Components.ID("{7ad5abf7-53b9-468d-b50c-4d9614a9dc14}");
757 function transfer_from_test(runner)
759   sendOnClick(getElement(runner, "transfer.fromFlow"));
760   runner.watchWindow = getFrame(runner).contentWindow;
763 const transfer_from_discard_contractID = "@aasii.org/test/transfer-from-discard;1";
764 const transfer_from_discard_name = "aaVCTransferFromDiscardTest";
765 const transfer_from_discard_CID = Components.ID("{ca063e94-1b9c-4e53-bf25-9fa8af605def}");
767 function transfer_from_discard_check(runner)
769   if (! transfer_check(runner))
770     runner.addJSFailure("[transfer->fromFlow] wrong init");
772   if (getElement(runner, "transfer.fromFlow").value != "junk")
773     runner.addJSFailure("[transfer->fromFlow] discard failed");
776 const transfer_from_submit_contractID = "@aasii.org/test/transfer-from-submit;1";
777 const transfer_from_submit_name = "aaVCTransferFromSubmitTest";
778 const transfer_from_submit_CID = Components.ID("{aaf7ec49-e9aa-45a8-b630-56b6659fa6ad}");
780 function transfer_from_submit_check(runner)
782   if (! transfer_check(runner))
783     runner.addJSFailure("[transfer->fromFlow] wrong page init");
785   if (getElement(runner, "transfer.fromFlow").value != "bank account 2")
786     runner.addJSFailure("[transfer->fromFlow] submit failed:"
787         + getElement(runner, "transfer.fromFlow").value);
790 /* ask for 'to' flow from transfer page */
791 const transfer_to_contractID = "@aasii.org/test/transfer-to;1";
792 const transfer_to_name = "aaVCTransferToTest";
793 const transfer_to_CID = Components.ID("{3c13bbbd-927b-4b67-be0a-2f80691bed1e}");
795 function transfer_to_test(runner)
797   sendOnClick(getElement(runner, "transfer.toFlow"));
798   runner.watchWindow = getFrame(runner).contentWindow;
801 const transfer_to_discard_contractID = "@aasii.org/test/transfer-to-discard;1";
802 const transfer_to_discard_name = "aaVCTransferToDiscardTest";
803 const transfer_to_discard_CID = Components.ID("{a04d7093-663b-4c24-9c96-028c67b89df3}");
805 function transfer_to_discard_check(runner)
807   if (! transfer_check(runner))
808     runner.addJSFailure("[transfer->toFlow] wrong init");
810   if (getElement(runner, "transfer.toFlow").value != "junk")
811     runner.addJSFailure("[transfer->toFlow] discard failed");
814 const transfer_to_submit_contractID = "@aasii.org/test/transfer-to-submit;1";
815 const transfer_to_submit_name = "aaVCTransferToSubmitTest";
816 const transfer_to_submit_CID = Components.ID("{e827d4c8-89c6-4f19-8df3-0bc2c70f658b}");
818 function transfer_to_submit_check(runner)
820   if (! transfer_check(runner))
821     runner.addJSFailure("[transfer->toFlow] wrong page init");
823   if (getElement(runner, "transfer.toFlow").value != "forex deal 4")
824     runner.addJSFailure("[transfer->toFlow] submit failed:"
825         + getElement(runner, "transfer.toFlow").value);
828 /* ask for 'to' flow from transfer page */
829 const transfer_save_contractID = "@aasii.org/test/transfer-save;1";
830 const transfer_save_name = "aaVCTransferSaveTest";
831 const transfer_save_CID = Components.ID("{bcb12042-4b82-4e71-949b-228b444e344c}");
833 function transfer_save_test(runner)
835   getElement(runner, "transfer.amount").value = "200";
836   sendOnInput(getElement(runner, "transfer.amount"));
837   if (! transfer_sync_check(runner))
838     runner.addJSFailure("[transfer save] page out of sync");
839   getElement(runner, "transfer.date").value = "2007-09-10";
840   sendOnChange(getElement(runner, "transfer.date"));
841   if (! transfer_sync_check(runner))
842     runner.addJSFailure("[transfer save] page out of sync");
843   sendOnClick(getElement(runner, "transfer.commit"));
844   if (! transfer_sync_check(runner))
845     runner.addJSFailure("[transfer save] page out of sync");
846   if (getElement(runner, "transfer.value").value != "6840.00")
847     runner.addJSFailure("[transfer save] wrong value:" + getElement(runner,
848           "transfer.value").value);
849   if (getElement(runner, "transfer.earnings").value != "150.00")
850     runner.addJSFailure("[transfer save] wrong earnings:" + getElement(runner,
851           "transfer.earnings").value);
852   if (getElement(runner,"transfer.commit").getAttribute("disabled") != "true")
853     runner.addJSFailure("[transfer save] 'commit' not disabled");
854   sendOnClick(getElement(runner, "transfer.reset"));
855   if (getElement(runner,"transfer.commit").hasAttribute("disabled"))
856     runner.addJSFailure("[transfer save] 'commit' not enabled");
859 /* test for bug 128 */
860 const add_flow_when_selecting_contractID = "@aasii.org/test/add-flow-when-selecting;1";
861 const add_flow_when_selecting_name = "aaVCAddFlowWhenSelectingTest";
862 const add_flow_when_selecting_CID = Components.ID("{0a964c08-8f27-4568-a3fa-78e6d4217bdd}");
864 function add_flow_when_selecting_check(runner)
866   var tree = getElement(runner, "page1.tree");
867   var view = tree.view;
868   runner.doCommand("cmd_page1_new");
870   var flow = getFrame(runner).contentWindow.wrappedJSObject.gDetails.buffer;
872   var entities = getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
873     .sessionHistory.createQuery("@aasii.org/storage/load-entity;1")
874     .QueryInterface(nsCI.aaILoadQuery);
875   entities.load();
876   flow.entity = entities.queryElementAt(3, nsCI.aaIEntity);
878   var resources = getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
879     .sessionHistory.createQuery("@aasii.org/storage/load-resource;1")
880     .QueryInterface(nsCI.aaILoadQuery);
881   resources.load();
882   flow.takeResource = resources.queryElementAt(3, nsCI.aaIResource);
883   flow.giveResource = resources.queryElementAt(5, nsCI.aaIResource);
885   getElement(runner, "flow.tag").value = "forex deal 5";
886   sendOnInput(getElement(runner, "flow.tag"));
888   getFrame(runner).contentWindow.wrappedJSObject.gIndirectRate = 1;
889   getElement(runner, "flow.rate").value = "1.6";
890   sendOnInput(getElement(runner, "flow.rate"));
892   runner.doCommand("cmd_page1_save");
893   
894   if (getElement(runner, "page1.browseSet").hasAttribute("disabled"))
895     runner.addJSFailure("edit status - bug 128 regression");
896   if (view.getCellText(view.selection.currentIndex,tree.columns[0])
897       != "forex deal 5")
898     runner.addJSFailure("selection - bug 128 regression");
899   if (getElement(runner, "flow.rate").value != "0.625")
900     runner.addJSFailure("rate switch - bug 129 regression");