test: added ui test utils module
[abstract.git] / app / test / aaTestAccountViews.js
blob77bcdafaf3d8f9d62e34aa33a334bda2b97da438
1 /* vim:set ts=2 sw=2 sts=2 et cindent tw=79 ft=javascript: */
2 /*
3  * Copyright (C) 2007,2008 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");
27 Components.utils.import("resource:///modules/aaUITestUtils.jsm");
29 var clickToChoose = "";
30 var profitAndLoss = "";
31 var debitTerm = "";
32 var creditTerm = "";
35  * Module entry point
36  * The NSGetModule function is the magic entry point that XPCOM uses to find
37  * what XPCOM components this module provides
38  */
39 function NSGetModule(comMgr, fileSpec)
41   var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
42     .getService(Components.interfaces.mozIJSSubScriptLoader);
43   loader.loadSubScript("resource:///modules/nsTestFrame.jsm");
44   loader.loadSubScript("resource:///modules/aaTestNames.jsm");
46   var aaVCTestModule = new JSTestModule();
47   aaVCTestModule.init = ModuleInit;
48   aaVCTestModule.init();
49   return aaVCTestModule;
52 function ModuleInit()
54   this._name = moduleName;
55   this._CID = Components.ID(moduleCID);
56   this._contractID = moduleContractID;
58   /*  0 */
59   this._add(chart_page_CID, chart_page_contractID,
60       chart_page_name, chart_page_test, chart_page_check);
61   /*  1 */
62   this._add(chart_resource_CID, chart_resource_contractID, chart_resource_name,
63       chart_resource_test, resource_select_check);
64   /*  2 */
65   this._add(chart_resource_submit_CID, chart_resource_submit_contractID,
66       chart_resource_submit_name, resource_submit_test,
67       chart_resource_submit_check);
68   this._tests[2].instance.item = 0;
69   /*  3 */
70   this._repeat(0);
71   /*  4 */
72   this._add(transfer_page_CID, transfer_page_contractID,
73       transfer_page_name, transfer_page_test, transfer_page_check);
74   /*  5 */
75   this._add(transfer_to_CID, transfer_to_contractID, transfer_to_name,
76       transfer_to_test, flow_select_check);
77   /*  6 */
78   this._add(transfer_to_discard_CID, transfer_to_discard_contractID,
79       transfer_to_discard_name, flow_discard_test,
80       transfer_to_discard_check);
81   this._tests[6].instance.item = 0;
82   /*  7 */
83   this._repeat(5);
84   /*  8 */
85   this._add(transfer_to_create_CID, transfer_to_create_contractID,
86       transfer_to_create_name, transfer_to_create_test, resource_select_check);
87   /*  9 */
88   this._add(subflow_give_submit_CID, subflow_give_submit_contractID,
89       subflow_give_submit_name, resource_submit_test,
90       flow_check);
91   this._tests[9].instance.item = 1;
92   /* 10 */
93   this._add(subflow_take_select_CID, subflow_take_select_contractID,
94       subflow_take_select_name, flow_take_test, resource_select_check);
95   /* 11 */
96   this._add(subflow_take_submit_CID, subflow_take_submit_contractID,
97       subflow_take_submit_name, resource_submit_test,
98       flow_check);
99   this._tests[11].instance.item = 1;
100   /* 12 */
101   this._add(subflow_entity_select_CID, subflow_entity_select_contractID,
102       subflow_entity_select_name, flow_entity_test, entity_select_check);
103   /* 13 */
104   this._add(subflow_entity_submit_CID, subflow_entity_submit_contractID,
105       subflow_entity_submit_name, resource_submit_test,
106       flow_check);
107   this._tests[13].instance.item = 1;
108   /* 14 */
109   this._add(transfer_to_submit_CID, transfer_to_submit_contractID,
110       transfer_to_submit_name,  transfer_to_submit_test,
111       transfer_check);
112   this._tests[14].instance.item = 1;
113   /* 15 */
114   this._add(transfer_from_CID, transfer_from_contractID, transfer_from_name,
115       transfer_from_test, flow_select_check);
116   /* 16 */
117   this._add(transfer_from_discard_CID, transfer_from_discard_contractID,
118       transfer_from_discard_name, flow_discard_test,
119       transfer_from_discard_check);
120   /* 17 */
121   this._repeat(15);
122   /* 18 */
123   this._add(transfer_from_submit_CID, transfer_from_submit_contractID,
124       transfer_from_submit_name, flow_submit_test, transfer_from_submit_check);
125   this._tests[18].instance.item = 0;
126   /* 19 */
127   this._add(transfer_save_CID, transfer_save_contractID,
128       transfer_save_name, transfer_save_test, flow_select_check);
129   /* 20 */
130   this._add(submit_after_reset_CID, submit_after_reset_contractID,
131       submit_after_reset_name,  flow_submit_test,
132       submit_after_reset_check);
133   this._tests[20].instance.item = 1;
134   /* 21 */
135   this._add(account_page_CID, account_page_contractID, account_page_name,
136       account_page_test, account_page_check);
137   /* 22 */
138   this._add(transcript_page_CID, transcript_page_contractID,
139       transcript_page_name, transcript_page_test, transcript_page_check);
140   /* 23 */
141   this._add(transcript_flow_CID, transcript_flow_contractID, transcript_flow_name,
142       transcript_flow_test, flow_select_check);
143   /* 24 */
144   this._add(tf_discard_CID, tf_discard_contractID, tf_discard_name,
145       flow_discard_test, transcript_flow_discard_check);
146   this._tests[24].instance.item = 0;
147   /* 25 */
148   this._repeat(23);
149   /* 26 */
150   this._add(tf_submit_CID, tf_submit_contractID, tf_submit_name,
151       flow_submit_test, transcript_flow_submit_check);
152   this._tests[26].instance.item = 1;
153   /* 27 */
154   this._add(transcript_load_CID, transcript_load_contractID,
155       transcript_load_name, transcript_load_test);
156   /* 28 */
157   this._add(transcript_after_flow_CID, transcript_after_flow_contractID,
158       transcript_after_flow_name, transcript_after_flow_test);
159   /* 29 */
160   this._add(transcript_income_flow_CID, transcript_income_flow_contractID,
161       transcript_income_flow_name, transcript_income_flow_test);
162   /* 30 */
163   this._add(rate_page_CID, rate_page_contractID,
164       rate_page_name, rate_page_test, rate_page_check);
165   /* 31 */
166   this._add(rate_resource_CID, rate_resource_contractID, rate_resource_name,
167       rate_resource_test, resource_select_check);
168   /* 32 */
169   this._add(rate_resource_discard_CID, rate_resource_discard_contractID,
170       rate_resource_discard_name, resource_discard_test,
171       rate_resource_discard_check);
172   /* 33 */
173   this._repeat(31);
174   /* 34 */
175   this._add(rate_resource_submit_CID, rate_resource_submit_contractID,
176       rate_resource_submit_name, resource_submit_test,
177       rate_resource_submit_check);
178   this._tests[34].instance.item = 3;
179   /* 35 */
180   this._add(rate_save_CID, rate_save_contractID,
181       rate_save_name, rate_save_test);
182   /* 36 */
183   this._add(rate_digits_CID, rate_digits_contractID,
184       rate_digits_name, rate_digits_test);
185   /* 37 */
186   this._add(ledger_page_CID, ledger_page_contractID,
187       ledger_page_name, ledger_page_test, ledger_page_check);
188   /* 38 */
189   this._add(tasp_CID, tasp_contractID, tasp_name,
190       transfer_page_test, tasp_select_from);
191   /* 39 */
192   this._repeat(15);
193   /* 40 */
194   this._add(tasff_CID, tasff_contractID,
195       tasff_name, flow_submit_test, tasff_check);
196   this._tests[this._tests.length - 1].instance.item = 3;
197   /* 41 */
198   this._repeat(5);
199   this._add(tastf_CID, tastf_contractID,
200       tastf_name, flow_submit_test, tastf_check);
201   this._tests[this._tests.length - 1].instance.item = 0;
204 function initLocaleSymbols()
206   var heap = Components.classes["@mozilla.org/intl/stringbundle;1"]
207     .createInstance(nsCI.nsIStringBundleService);
208   var bundle = heap.createBundle(
209       "chrome://abstract/locale/abstract.properties");
210   clickToChoose = bundle.GetStringFromName("link.choose");
211   profitAndLoss = bundle.GetStringFromName("terms.profits");
212   debitTerm = bundle.GetStringFromName("terms.debit");
213   creditTerm = bundle.GetStringFromName("terms.credit");
216 /* Module-specific Defines and Utilities */
217 const contentId = "content";
219 /* Account Page Test */
220 const account_page_contractID = "@aasii.org/abstract/test/account-balance;1";
221 const account_page_name = "aaAccountPageTest";
222 const account_page_CID = Components.ID("{3391fcd8-e122-4e31-9162-f114fe2d843d}");
224 function account_page_test(runner)
226   runner.doCommand("cmd_report_balances");
227   runner.watchWindow = getFrame(runner).contentWindow;
230 function account_page_check(runner)
232   var tree = getElement(runner, "balances.tree");
233   var view = tree.view;
234   var date = getElement(runner, "filter.date");
235   date.value = "2008-02-06";
236   sendOnChange(date);
237   if (!tree)
238     runner.addJSFailure("[balances page] failed");
240   if (view.getCellText(0,tree.columns[3]) != "")
241     runner.addJSFailure("transcript.tree.line1.col4 failed");
242   if (view.getCellText(1,tree.columns[3]) != "100.00")
243     runner.addJSFailure("transcript.tree.line2.col4 failed");
244   if (view.getCellText(2,tree.columns[3]) != "10000.00")
245     runner.addJSFailure("transcript.tree.line3.col4 failed");
246   if (view.getCellText(3,tree.columns[3]) != "20000.00")
247     runner.addJSFailure("transcript.tree.line4.col4 failed");
248   if (view.getCellText(4,tree.columns[3]) != "")
249     runner.addJSFailure("transcript.tree.line5.col4 failed");
251   if (view.getCellText(0,tree.columns[4]) != "30000.00")
252     runner.addJSFailure("transcript.tree.line1.col4 failed");
253   if (view.getCellText(1,tree.columns[4]) != "")
254     runner.addJSFailure("transcript.tree.line2.col4 failed");
255   if (view.getCellText(2,tree.columns[4]) != "")
256     runner.addJSFailure("transcript.tree.line3.col4 failed");
257   if (view.getCellText(3,tree.columns[4]) != "")
258     runner.addJSFailure("transcript.tree.line4.col4 failed");
259   if (view.getCellText(4,tree.columns[4]) != "0.00")
260     runner.addJSFailure("transcript.tree.line5.col4 failed");
262   getElement(runner, "units.mode").selectedIndex = 1;
264   if (tree.view.getCellText(0,tree.columns[0]) != aaTestNames.FlowTag[0])
265     runner.addJSFailure("balance.tree.line1.col1 failed");
266   if (tree.view.getCellText(0,tree.columns[1]) != aaTestNames.EntityTag[0])
267     runner.addJSFailure("balance.tree.line1.col2 failed");
268   if (tree.view.getCellText(0,tree.columns[2]) != aaTestNames.ResourceTag[0])
269     runner.addJSFailure("balance.tree.line1.col3 failed");
270   if (tree.view.getCellText(0,tree.columns[3]) != "")
271     runner.addJSFailure("balance.tree.line3.col4 failed");
272   if (tree.view.getCellText(0,tree.columns[4]) != "30000.00")
273     runner.addJSFailure("balance.tree.line1.col5 failed");
274   if (tree.view.getCellText(3,tree.columns[3]) != "20000.00")
275     runner.addJSFailure("balance.tree.line3.col4 failed");
277   if (getElement(runner, "footer.sumDebit").value != "40000.00")
278     runner.addJSFailure("balance.totalAssets is wrong: "
279         + getElement(runner, "footer.sumDebit").value);
280   if (getElement(runner, "footer.sumCredit").value != "40000.00")
281     runner.addJSFailure("balance.totalLiabilities is wrong: "
282         + getElement(runner, "footer.sumCredit").value);
285 /* Transcript Page Test */
286 const transcript_page_contractID = "@aasii.org/abstract/test/account-transcript;1";
287 const transcript_page_name = "aaTranscriptPageTest";
288 const transcript_page_CID = Components.ID("{d7a1753e-7d74-4f8a-940d-317d37c369ee}");
290 function transcript_page_test(runner)
292   runner.doCommand("cmd_report_transcript");
293   runner.watchWindow = getFrame(runner).contentWindow;
296 function transcript_check(runner)
298   if (! getElement(runner, "transcript.tree"))
299     runner.addJSFailure("[transcript page] tree failed");
300   if (! getElement(runner, "filter.flow"))
301     runner.addJSFailure("[transcript page] flow link failed");
304 const transcript1DateFrom = "2008-02-04";
305 const transcript1DateTo = "2008-02-06";
307 function transcript_page_check(runner)
309   transcript_check(runner);
310   var tree = getElement(runner, "transcript.tree");
311   // XXX 403202 'Unflexing' the tree speeds up reflow significantly
312   if (tree && tree.hasAttribute("flex"))
313     tree.removeAttribute("flex");
315   getElement(runner, "filter.dateFrom").value = transcript1DateFrom;
316   sendOnChange(getElement(runner, "filter.dateFrom"));
317   getElement(runner, "filter.dateTo").value = transcript1DateTo;
318   sendOnChange(getElement(runner, "filter.dateTo"));
319   if (getElement(runner, "filter.cancel").hasAttribute("collapsed"))
320     runner.addJSFailure("[transcript page] 'change' command");
323 /* ask for flow from transcript page */
324 const transcript_flow_contractID = "@aasii.org/test/transcript-flow;1";
325 const transcript_flow_name = "aaVCTranscriptFlowTest";
326 const transcript_flow_CID = Components.ID("{b4fe65f6-c55e-491c-a039-27c0beff12cc}");
328 function transcript_flow_test(runner)
330   sendOnClick(getElement(runner, "filter.flow"));
331   runner.watchWindow = getFrame(runner).contentWindow;
334 const tf_discard_contractID = "@aasii.org/test/transcript-flow-discard;1";
335 const tf_discard_name = "aaVCTranscriptFlowDiscardTest";
336 const tf_discard_CID = Components.ID("{a122d947-3fb2-4796-87fe-22c67706bd9a}");
338 function transcript_flow_discard_check(runner)
340   transcript_check(runner);
341   if (getElement(runner, "filter.flow").value != clickToChoose)
342     runner.addJSFailure("[transcript->flow] discard failed");
345 const tf_submit_contractID = "@aasii.org/test/transcript-flow-submit;1";
346 const tf_submit_name = "aaVCTranscriptFlowSubmitTest";
347 const tf_submit_CID = Components.ID("{3197a8bb-1fd1-453e-98d8-6bc7996552a5}");
349 function transcript_flow_submit_check(runner)
351   transcript_check(runner);
352   if (getElement(runner, "filter.flow").value != aaTestNames.FlowTag[1])
353     runner.addJSFailure("[transcript->flow] submit failed: "
354         + getElement(runner, "filter.flow").value + "!=" + aaTestNames.FlowTag[1]);
357 /* submit/discard from flow page */
358 function flow_select_check(runner)
360   flow_check(runner);
361   var tree = getElement(runner, "page1.tree");
362   // XXX 403202 'Unflexing' the tree speeds up reflow significantly
363   if (tree && tree.hasAttribute("flex"))
364     tree.removeAttribute("flex");
366   if (getAnnoElement(runner, "header", "header.discard")
367       .getAttribute("collapsed") == "true")
368     runner.addJSFailure("flow.discard button should be visible");
369   if (getAnnoElement(runner, "header", "header.submit")
370       .getAttribute("collapsed") == "true")
371     runner.addJSFailure("flow.submit button should be visible");
372   if (getElement(runner, "cmd_page1_discard")
373       .getAttribute("disabled") == "true")
374     runner.addJSFailure("flow_discard command should be enabled");
375   if (getElement(runner, "cmd_page1_submit")
376       .getAttribute("disabled") == "true")
377     runner.addJSFailure("flow_submit command should be enabled");
380 function flow_discard_test(runner)
382   getElement(runner,"page1.tree").view.selection.select(this.item);
383   runner.doCommand("cmd_page1_discard");
384   runner.watchWindow = getFrame(runner).contentWindow;
387 function flow_submit_test(runner)
389   if (this.item < 0)
390     this.item = getElement(runner, "page1.tree").view.rowCount + this.item;
391   getElement(runner,"page1.tree").view.selection.select(this.item);
392   runner.doCommand("cmd_page1_submit");
393   runner.watchWindow = getFrame(runner).contentWindow;
396 function flow_last_line_check(runner)
398   var tree = getElement(runner, "page1.tree");
399   var view = tree.view;
400   if (view.getCellText(view.rowCount - 1, tree.columns[0])
401       != profitAndLoss)
402     runner.addJSFailure("[flow page] wrong tag on the last line");
405 /* Transcript Load Test */
406 const transcript_load_contractID = "@aasii.org/abstract/test/transcript-load;1";
407 const transcript_load_name = "aaTranscriptLoadTest";
408 const transcript_load_CID = Components.ID("{335e1a8e-f8a0-4a9d-850b-0404cd2db9e5}");
410 function transcript_load_test(runner)
412   var loadLnk = getElement(runner, "transcript.load");
413   var startDate = getElement(runner, "filter.dateFrom");
414   var endDate = getElement(runner, "filter.dateTo");
415   var tree = getElement(runner, "transcript.tree");
416   var view = tree.view.QueryInterface(nsCI.nsITreeView);
417   
418   sendOnClick(loadLnk);
420   if (getElement(runner, "filter.group").getAttribute("collapsed") != "true")
421     runner.addJSFailure("[transcript load] filter not hidden");
423   if (getElement(runner, "header.flow").value != aaTestNames.FlowTag[1])
424     runner.addJSFailure("[transcript load] wrong flow: "
425         + getElement(runner, "header.flow").value);
426   if (getElement(runner, "header.dateFrom").value != transcript1DateFrom)
427     runner.addJSFailure("[transcript load] [1] wrong 'from' date");
428   if (getElement(runner, "header.sumDebitFrom").value != "0.00")
429     runner.addJSFailure("[transcript load] [1] wrong 'from' debit");
430   if (getElement(runner, "header.sumCreditFrom").value != "0.00")
431     runner.addJSFailure("[transcript load] [1] wrong 'from' credit");
432   if (getElement(runner, "header.dateTo").value != transcript1DateTo)
433     runner.addJSFailure("[transcript load] [1] wrong 'to' date");
434   if (getElement(runner, "header.sumDebits").value != "300.00")
435     runner.addJSFailure("[transcript load] [1] wrong total debit");
436   if (getElement(runner, "header.sumCredits").value != "200.00")
437     runner.addJSFailure("[transcript load] [1] wrong total credit");
438   if (getElement(runner, "header.sumDebitTo").value != "100.00")
439     runner.addJSFailure("[transcript load] [1] wrong 'to' debit");
440   if (getElement(runner, "header.sumCreditTo").value != "0.00")
441     runner.addJSFailure("[transcript load] [1] wrong 'to' credit");
443   if (view.getCellText(0,tree.columns[0]) != "2008-02-04")
444     runner.addJSFailure("transcript.tree.line1.col1 failed");
445   if (view.getCellText(1,tree.columns[0]) != "2008-02-05")
446     runner.addJSFailure("transcript.tree.line2.col1 failed");
448   if (view.getCellText(0,tree.columns[1]) != aaTestNames.FlowTag[0])
449     runner.addJSFailure("transcript.tree.line1.col2 failed");
450   if (view.getCellText(1,tree.columns[1]) != "c")
451     runner.addJSFailure("transcript.tree.line2.col2 failed");
453   if (view.getCellText(0,tree.columns[2]) != "300.00")
454     runner.addJSFailure("transcript.tree.line1.col3 failed");
455   if (view.getCellText(1,tree.columns[2]) != "")
456     runner.addJSFailure("transcript.tree.line2.col3 failed");
458   if (view.getCellText(0,tree.columns[3]) != "")
459     runner.addJSFailure("transcript.tree.line1.col4 failed");
460   if (view.getCellText(1,tree.columns[3]) != "200.00")
461     runner.addJSFailure("transcript.tree.line2.col4 failed");
463   getElement(runner, "units.mode").selectedIndex = 1;
465   if (view.getCellText(0,tree.columns[2]) != "30000.00")
466     runner.addJSFailure("transcript.tree.line1.col3 failed");
467   if (view.getCellText(1,tree.columns[2]) != "")
468     runner.addJSFailure("transcript.tree.line2.col3 failed");
470   if (view.getCellText(0,tree.columns[3]) != "")
471     runner.addJSFailure("transcript.tree.line1.col4 failed");
472   if (view.getCellText(1,tree.columns[3]) != "20000.00")
473     runner.addJSFailure("transcript.tree.line2.col4 failed");
475   /* Test for bug #133 */
476   if (getElement(runner, "header.sumDebitTo").value != "10000.00")
477     runner.addJSFailure("[transcript load] [1] wrong 'to' debit");
478   if (getElement(runner, "header.sumCreditTo").value != "0.00")
479     runner.addJSFailure("[transcript load] [1] wrong 'to' credit");
481   if (getElement(runner, "header.sumDebits").value != "30000.00")
482     runner.addJSFailure("[transcript load] [1] wrong total debit");
483   if (getElement(runner, "header.sumCredits").value != "20000.00")
484     runner.addJSFailure("[transcript load] [1] wrong total credit");
487 /* Tests for Flow-in-Transcript-Selection bug #122 */
488 const transcript_after_flow_contractID = "@aasii.org/abstract/test/trasncript-after-flow;1";
489 const transcript_after_flow_name = "aaTranscriptAfterFlowP1";
490 const transcript_after_flow_CID = Components.ID("{b9c0df9d-6036-43c7-b0b4-d4e2f3092601}");
492 function transcript_after_flow_test(runner)
494   var loader = Components.classes["@aasii.org/storage/load-flow;1"].
495     createInstance(nsCI.aaISqlRequest);
496   var flows = getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
497     .sessionHistory.load(loader);
498   getFrame(runner).contentWindow.wrappedJSObject.gView.param.flow = flows
499     .queryElementAt(3, nsCI.aaIFlow);
501   var tree = getElement(runner, "transcript.tree");
502   var view = tree.view.QueryInterface(nsCI.nsITreeView);
503   
504   if (view.getCellText(0,tree.columns[1]) != aaTestNames.FlowTag[0])
505     runner.addJSFailure("transcript.tree.line3.col2 failed: " +
506         view.getCellText(0,tree.columns[1]) + "!=" + aaTestNames.FlowTag[0]);
509 /* Tests for income-flow display */
510 const transcript_income_flow_contractID = "@aasii.org/abstract/test/trasncript-income-flow;1";
511 const transcript_income_flow_name = "aaTranscriptIncomeFlowP1";
512 const transcript_income_flow_CID = Components.ID("{07f18646-a3be-4ab5-9edd-7b2b899f00b8}");
514 function transcript_income_flow_test(runner)
516   var loadLnk = getElement(runner, "transcript.load");
517   var startDate = getElement(runner, "filter.dateFrom");
518   var endDate = getElement(runner, "filter.dateTo");
519   var tree = getElement(runner, "transcript.tree");
520   var view = tree.view.QueryInterface(nsCI.nsITreeView);
521   
522   getFrame(runner).contentWindow.wrappedJSObject.gView.param.flow =
523     Components.classes["@aasii.org/base/income-flow;1"]
524     .createInstance(nsCI.aaIFlow);
526   startDate.value = "2008-02-04";
527   endDate.value = "2008-02-06";
529   sendOnClick(loadLnk);
531   if (getElement(runner, "header.dateFrom").value != "2008-02-04")
532     runner.addJSFailure("[transcript load] [2] wrong 'from' date");
533   if (getElement(runner, "header.sumDebitFrom").value != "0.00")
534     runner.addJSFailure("[transcript load] [2] wrong 'from' debit");
535   if (getElement(runner, "header.sumCreditFrom").value != "0.00")
536     runner.addJSFailure("[transcript load] [2] wrong 'from' credit");
537   if (getElement(runner, "header.dateTo").value != "2008-02-06")
538     runner.addJSFailure("[transcript load] [2] wrong 'to' date");
539   if (getElement(runner, "header.sumDebitTo").value != "0.00")
540     runner.addJSFailure("[transcript load] [2] wrong 'to' debit");
541   if (getElement(runner, "header.sumCreditTo").value != "10000.00")
542     runner.addJSFailure("[transcript load] [2] wrong 'to' credit");
543   if (view.rowCount != 1)
544     runner.addJSFailure("[transcript load] [2] line count");
546   if (view.getCellText(0,tree.columns[0]) != "2008-02-05")
547     runner.addJSFailure("transcript.tree.line1.col1 failed");
549   if (view.getCellText(0,tree.columns[1]) != "c")
550     runner.addJSFailure("transcript.tree.line1.col2 failed");
552   if (view.getCellText(0,tree.columns[2]) != "")
553     runner.addJSFailure("transcript.tree.line1.col3 failed");
555   if (view.getCellText(0,tree.columns[3]) != "10000.00")
556     runner.addJSFailure("transcript.tree.line1.col4 failed");
559 /* Chart Page Test */
560 const chart_page_contractID = "@aasii.org/abstract/test/account-chart;1";
561 const chart_page_name = "aaChartPageTest";
562 const chart_page_CID = Components.ID("{9166dd77-6add-4104-a75e-cbdc41c6d3df}");
564 function chart_page_test(runner)
566   initLocaleSymbols();
567   runner.doCommand("cmd_manage_chart");
568   runner.watchWindow = getFrame(runner).contentWindow;
571 function chart_sync_check(runner)
573   var result = true;
574   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
575   var chart = wnd.gView.chart;
576   var loaded = wnd.gLoaded;
577   if (! chart) {
578     runner.addJSFailure(" no chart object");
579     return false;
580   }
582   if (chart.resource && chart.resource.tag
583       != getElement(runner, "chart.resource").value)
584     runner.addJSFailure(" chart.resource is wrong");
586   if ( loaded ^ getElement(runner, "chart.set").hasAttribute("collapsed")) {
587     runner.addJSFailure(" chart.set command out of sync");
588     result = false;
589   }
591   return result;
594 function chart_check(runner)
596   var result = true;
597   if (getFrame(runner).contentWindow.location.href !=
598       "chrome://abstract/content/chart.xul") {
599     runner.addJSFailure(" [chart] wrong xul document");
600     return false;
601   }
603   if ( ! chart_sync_check(runner) )
604     return false;
606   return result;
609 function chart_page_check(runner)
611   if (! chart_check(runner))
612     runner.addJSFailure("[chart page]");
615 /* ask for resource from chart page */
616 const chart_resource_contractID = "@aasii.org/test/chart-resource;1";
617 const chart_resource_name = "aaVCChartResourceTest";
618 const chart_resource_CID = Components.ID("{0a83a675-ebbd-4796-9147-5a423b83d20b}");
620 function chart_resource_test(runner)
622   sendOnClick(getElement(runner, "chart.resource"));
623   runner.watchWindow = getFrame(runner).contentWindow;
626 const chart_resource_submit_contractID = "@aasii.org/test/chart-resource-submit;1";
627 const chart_resource_submit_name = "aaVCChartResourceSubmitTest";
628 const chart_resource_submit_CID = Components.ID("{5b81d3f1-55a1-4f37-b608-992d8f094741}");
630 function chart_resource_submit_check(runner)
632   if (! chart_check(runner))
633     runner.addJSFailure("[chart->resource] wrong page init");
635   if (getElement(runner, "chart.resource").value != aaTestNames.ResourceTag[0])
636     runner.addJSFailure("[chart->resource] submit failed: "
637         + getElement(runner, "chart.resource").value);
639   sendOnClick(getElement(runner, "chart.set"));
640   if ( ! chart_sync_check(runner))
641     runner.addJSFailure("[chart->date] out of sync");
644 /* Transfer Page Test */
645 const transfer_page_contractID = "@aasii.org/abstract/test/account-transfer;1";
646 const transfer_page_name = "aaTransferPageTest";
647 const transfer_page_CID = Components.ID("{950daefb-95ba-4960-a11a-b88af6cf6cad}");
649 function transfer_page_test(runner)
651   runner.doCommand("cmd_process_transfer");
652   runner.watchWindow = getFrame(runner).contentWindow;
655 function transfer_sync_check(runner)
657   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
658   var result = true;
659   if (! wnd) {
660     runner.addJSFailure("[transfer sync] getting window");
661     return false;
662   }
664   if (! wnd.gFact) {
665     runner.addJSFailure("[transfer sync] getting fact object");
666     return false;
667   }
669   if (getElement(runner, "transfer.fromFlow").value != (wnd.gFact.takeFrom ? 
670         wnd.gFact.takeFrom.tag : clickToChoose)) {
671     runner.addJSFailure("  'fromFlow.tag' is wrong:" + getElement(runner,
672           "transfer.fromFlow").value);
673     result = false;
674   }
676   if (getElement(runner, "transfer.toFlow").value != (wnd.gFact.giveTo ? 
677         wnd.gFact.giveTo.tag : clickToChoose)) {
678     runner.addJSFailure("  'toFlow.tag' is wrong: " + getElement(runner,
679           "transfer.toFlow").value);
680     result = false;
681   }
683   if (getElement(runner, "transfer.amount").value != wnd.gFact.amount) {
684     runner.addJSFailure("  'amount' is wrong: " + getElement(runner,
685           "transfer.amount").value);
686     result = false;
687   }
689   var time = new Date(wnd.gEvent.time / 1000);
690   if (getElement(runner, "transfer.date").value != time
691       .toLocaleFormat('%Y-%m-%d')) {
692     runner.addJSFailure("  'date' is wrong: " + getElement(runner,
693           "transfer.date").value + " - " + time.toLocaleFormat('%Y-%m-%d'));
694     result = false;
695   }
697   if ((wnd.gTransaction && (getElement(runner, "transfer.value").value
698         != wnd.gTransaction.value.toFixed(2))) || !wnd.gTransaction
699       && (getElement(runner, "transfer.value").value != "")) {
700       runner.addJSFailure("  'value' is wrong: " + getElement(runner,
701             "transfer.value").value);
702       result = false;
703   }
705   return result;
708 function transfer_check(runner)
710   var result = true;
711   if (getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
712       .currentURI.spec != "chrome://abstract/content/transfer.xul") {
713     runner.addJSFailure(" [transfer] wrong xul document");
714     return false;
715   }
716   if (! transfer_sync_check(runner)) {
717     runner.addJSFailure(" [transfer] page out of sync");
718     result = false;
719   }
721   return result;
724 function transfer_page_check(runner)
726   if (! transfer_check(runner))
727     runner.addJSFailure("[transfer page] wrong initialization");
729   if (getElement(runner, "transfer.amount").value != "0")
730     runner.addJSFailure("  'amount' is wrong: " + getElement(runner,
731           "transfer.amount").value);
733   var junk = Components.classes["@aasii.org/base/flow;1"].createInstance(nsCI.aaIFlow);
734   junk.tag = "junk";
735   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
736   wnd.gFact.takeFrom = junk;
737   wnd.gFact.giveTo = junk;
740 /* ask for 'from' flow from transfer page */
741 const transfer_from_contractID = "@aasii.org/test/transfer-from;1";
742 const transfer_from_name = "aaVCTransferFromTest";
743 const transfer_from_CID = Components.ID("{7ad5abf7-53b9-468d-b50c-4d9614a9dc14}");
745 function transfer_from_test(runner)
747   sendOnClick(getElement(runner, "transfer.fromFlow"));
748   runner.watchWindow = getFrame(runner).contentWindow;
751 const transfer_from_discard_contractID = "@aasii.org/test/transfer-from-discard;1";
752 const transfer_from_discard_name = "aaVCTransferFromDiscardTest";
753 const transfer_from_discard_CID = Components.ID("{ca063e94-1b9c-4e53-bf25-9fa8af605def}");
755 function transfer_from_discard_check(runner)
757   if (! transfer_check(runner))
758     runner.addJSFailure("[transfer->fromFlow] wrong init");
760   if (getElement(runner, "transfer.fromFlow").value != "junk")
761     runner.addJSFailure("[transfer->fromFlow] discard failed");
764 const transfer_from_submit_contractID = "@aasii.org/test/transfer-from-submit;1";
765 const transfer_from_submit_name = "aaVCTransferFromSubmitTest";
766 const transfer_from_submit_CID = Components.ID("{aaf7ec49-e9aa-45a8-b630-56b6659fa6ad}");
768 function transfer_from_submit_check(runner)
770   if (! transfer_check(runner))
771     runner.addJSFailure("[transfer->fromFlow] wrong page init");
773   if (getElement(runner, "transfer.fromFlow").value != aaTestNames.FlowTag[0])
774     runner.addJSFailure("[transfer->fromFlow] submit failed:"
775         + getElement(runner, "transfer.fromFlow").value);
778 /* ask for 'to' flow from transfer page */
779 const transfer_to_contractID = "@aasii.org/test/transfer-to;1";
780 const transfer_to_name = "aaVCTransferToTest";
781 const transfer_to_CID = Components.ID("{3c13bbbd-927b-4b67-be0a-2f80691bed1e}");
783 function transfer_to_test(runner)
785   sendOnClick(getElement(runner, "transfer.toFlow"));
786   runner.watchWindow = getFrame(runner).contentWindow;
789 const transfer_to_discard_contractID = "@aasii.org/test/transfer-to-discard;1";
790 const transfer_to_discard_name = "aaVCTransferToDiscardTest";
791 const transfer_to_discard_CID = Components.ID("{a04d7093-663b-4c24-9c96-028c67b89df3}");
793 function transfer_to_discard_check(runner)
795   if (! transfer_check(runner))
796     runner.addJSFailure("[transfer->toFlow] wrong init");
798   if (getElement(runner, "transfer.toFlow").value != "junk")
799     runner.addJSFailure("[transfer->toFlow] discard failed");
802 const transfer_to_create_contractID = "@aasii.org/test/transfer-to-create;1";
803 const transfer_to_create_name = "aaVCTransferToCreateTest";
804 const transfer_to_create_CID = Components.ID("{4c2eed92-0acd-4a60-9003-13e558ce961e}");
806 function transfer_to_create_test(runner)
808   flow_last_line_check(runner);
809   runner.doCommand("cmd_page1_new");
810   runner.doCommand("cmd_flow_give");
811   runner.watchWindow = getFrame(runner).contentWindow;
814 const subflow_give_submit_contractID = "@aasii.org/test/subflow-give-submit;1";
815 const subflow_give_submit_name = "aaVCSubflowGiveSubmitTest";
816 const subflow_give_submit_CID = Components.ID("{9daed633-4b08-4220-8931-4152f7bc5066}");
818 const subflow_take_submit_contractID = "@aasii.org/test/subflow-take-submit;1";
819 const subflow_take_submit_name = "aaVCSubflowtakeSubmitTest";
820 const subflow_take_submit_CID = Components.ID("{6b652c77-8368-42ca-9768-8376bad338ae}");
822 const subflow_take_select_contractID = "@aasii.org/test/subflow-take-select;1";
823 const subflow_take_select_name = "aaVCSubflowtakeSelectTest";
824 const subflow_take_select_CID = Components.ID("{479b48f0-a20f-488d-b219-dbfee74b15bd}");
826 const subflow_entity_submit_contractID = "@aasii.org/test/subflow-entity-submit;1";
827 const subflow_entity_submit_name = "aaVCSubflowGiveSubmitTest";
828 const subflow_entity_submit_CID = Components.ID("{316884a0-4623-4c49-b214-819bc7b98bc6}");
830 const subflow_entity_select_contractID = "@aasii.org/test/subflow-entity-select;1";
831 const subflow_entity_select_name = "aaVCSubflowGiveSelectTest";
832 const subflow_entity_select_CID = Components.ID("{63ecefa6-b153-4d83-a812-f23ae777d0f0}");
834 const transfer_to_submit_contractID = "@aasii.org/test/transfer-to-submit;1";
835 const transfer_to_submit_name = "aaVCTransferToSubmitTest";
836 const transfer_to_submit_CID = Components.ID("{dbd1150c-c80c-4a95-8a02-2906c0d06dd3}");
838 function transfer_to_submit_test(runner)
840   getElement(runner, "flow.tag").value = aaTestNames.FlowTag[1];
841   sendOnInput(getElement(runner, "flow.tag"));
843   getElement(runner, "flow.rate").value = "1.0";
844   sendOnInput(getElement(runner, "flow.rate"));
846   runner.doCommand("cmd_page1_save");
847   add_flow_when_selecting_check(runner);
848   if (this.item < 0)
849     this.item = getElement(runner, "page1.tree").view.rowCount + this.item;
850   getElement(runner,"page1.tree").view.selection.select(this.item);
851   runner.doCommand("cmd_page1_submit");
852   runner.watchWindow = getFrame(runner).contentWindow;
855 const transfer_save_contractID = "@aasii.org/test/transfer-save;1";
856 const transfer_save_name = "aaVCTransferSaveTest";
857 const transfer_save_CID = Components.ID("{bcb12042-4b82-4e71-949b-228b444e344c}");
859 function transfer_save_test(runner)
861   var amount = getElement(runner, "transfer.amount");
862   amount.value = "300";
863   sendOnInput(amount);
864   if (! transfer_sync_check(runner))
865     runner.addJSFailure("[transfer save] page out of sync");
866   var date = getElement(runner, "transfer.date");
867   date.value = "2008-02-04";
868   sendOnChange(date);
869   if (! transfer_sync_check(runner))
870     runner.addJSFailure("[transfer save] page out of sync");
872   var commit = getElement(runner, "transfer.commit");
873   sendOnClick(commit);
874   if (! transfer_sync_check(runner))
875     runner.addJSFailure("[transfer save] page out of sync");
876   var value = getElement(runner, "transfer.value");
877   if (value.value != "30000.00")
878     runner.addJSFailure("[transfer save] wrong value:" + value.value);
879   var earnings = getElement(runner, "transfer.earnings");
880   if (earnings.value != "")
881     runner.addJSFailure("[transfer save] wrong earnings:" + earnings.value);
882   if (getElement(runner,"transfer.commit").getAttribute("disabled") != "true")
883     runner.addJSFailure("[transfer save] 'commit' not disabled");
884   var reset = getElement(runner, "transfer.reset");
885   sendOnClick(reset);
886   if (getElement(runner,"transfer.commit").hasAttribute("disabled"))
887     runner.addJSFailure("[transfer save] 'commit' not enabled");
889   sendOnClick(getElement(runner, "transfer.fromFlow"));
890   runner.watchWindow = getFrame(runner).contentWindow;
893 function submit_after_reset_check(runner)
895   var amount = getElement(runner, "transfer.amount");
896   var date = getElement(runner, "transfer.date");
897   var commit = getElement(runner, "transfer.commit");
898   var value = getElement(runner, "transfer.value");
899   var earnings = getElement(runner, "transfer.earnings");
900   var reset = getElement(runner, "transfer.reset");
902   if (getElement(runner, "transfer.fromFlow").value != aaTestNames.FlowTag[1])
903     runner.addJSFailure("submit after reset failed:"
904         + getElement(runner, "transfer.fromFlow").value);
905   /* Prepare direct database access */
906   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
907   var session = getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
908     .sessionHistory;
909   var entityLoader = Components.classes["@aasii.org/storage/load-entity;1"]
910     .createInstance(nsCI.aaISqlRequest);
911   var entities = session.load(entityLoader);
912   var resourceLoader = Components.classes["@aasii.org/storage/load-resource;1"]
913     .createInstance(nsCI.aaISqlRequest);
914   var resources = session.load(resourceLoader);
915   var flow = Components.classes["@aasii.org/base/flow;1"]
916     .createInstance(nsCI.aaIFlow);
918   /* Create flow 'c' */
919   flow.tag = "c";
920   flow.entity = entities.queryElementAt(2, nsCI.aaIEntity);
921   flow.giveResource = resources.queryElementAt(1, nsCI.aaIResource);
922   flow.takeResource = resources.queryElementAt(0, nsCI.aaIResource);
923   flow.rate = 150;
924   session.save(flow, null);
926   /* Create flow 'd' */
927   flow = Components.classes["@aasii.org/base/flow;1"]
928     .createInstance(nsCI.aaIFlow);
929   flow.tag = "d";
930   flow.entity = entities.queryElementAt(3, nsCI.aaIEntity);
931   flow.giveResource = resources.queryElementAt(0, nsCI.aaIResource);
932   flow.takeResource = resources.queryElementAt(0, nsCI.aaIResource);
933   flow.rate = 1;
934   session.save(flow, null);
936   /* Load flows */
937   var flowLoader = Components.classes["@aasii.org/storage/load-flow;1"]
938     .createInstance(nsCI.aaISqlRequest);
939   var flows = session.load(flowLoader);
941   /* Add transfer 'b'->'c' of 200 */
942   //wnd.gFact.takeFrom = flows.queryElementAt(1, nsCI.aaIFlow);
943   wnd.gFact.giveTo = flows.queryElementAt(2, nsCI.aaIFlow);
944   amount.value = "200";
945   sendOnInput(amount);
946   date.value = "2008-02-05";
947   sendOnChange(date);
948   sendOnClick(commit);
949   if (value.value != "20000.00")
950     runner.addJSFailure("[transfer save] wrong value:" + value.value);
951   if (earnings.value != "10000.00")
952     runner.addJSFailure("[transfer save] wrong earnings:" + earnings.value);
953   sendOnClick(reset);
955   /* Add transfer 'c'->'d' of 20000 */
956   wnd.gFact.takeFrom = flows.queryElementAt(2, nsCI.aaIFlow);
957   wnd.gFact.giveTo = flows.queryElementAt(3, nsCI.aaIFlow);
958   amount.value = "20000";
959   sendOnInput(amount);
960   date.value = "2008-02-06";
961   sendOnChange(date);
962   sendOnClick(commit);
963   if (value.value != "20000.00")
964     runner.addJSFailure("[transfer save] wrong value:" + value.value);
965   if (earnings.value != "")
966     runner.addJSFailure("[transfer save] wrong earnings:" + earnings.value);
969 const submit_after_reset_contractID = "@aasii.org/test/submit-after-reset;1";
970 const submit_after_reset_name = "aaVCTransferToSubmitAfterReset";
971 const submit_after_reset_CID = Components.ID("{412fc32b-1aed-4efa-8456-ae5a4c2ef29a}");
973 /* test for bug 128 */
974 function add_flow_when_selecting_check(runner)
976   var tree = getElement(runner, "page1.tree");
977   var view = tree.view;
978   
979   if (getElement(runner, "page1.browseSet").hasAttribute("disabled"))
980     runner.addJSFailure("edit status - bug 128 regression");
981   if (view.getCellText(view.selection.currentIndex,tree.columns[0])
982       != aaTestNames.FlowTag[1])
983     runner.addJSFailure("selection - bug 128 regression");
984   tree.view.selection.select(0);
985   if (getElement(runner, "flow.rate").value != "0.01")
986     runner.addJSFailure("rate switch - bug 129 regression");
989 /* test for rate change page */
990 const rate_page_contractID = "@aasii.org/test/rate-page;1";
991 const rate_page_name = "aaVCRatePageTest";
992 const rate_page_CID = Components.ID("{cb01568d-1fb2-4ea9-a468-8d00b50b4c65}");
994 function rate_sync_check(runner)
996   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
997   var result = true;
998   if (! wnd) {
999     runner.addJSFailure("[rate sync] getting window");
1000     return false;
1001   }
1003   var details = wnd.view;
1004   if (! details) {
1005     runner.addJSFailure("[rate sync] details object is null");
1006     return false;
1007   }
1009   var quote;
1010   if (details.buffer)
1011     quote = details.buffer;
1012   else if (details._item)
1013     quote = details._item;
1014   
1015   var resourceBox = details._resource;
1016   var dateBox = details._date;
1017   var rateBox = details._rate;
1018   if (!quote) {
1019     if (resourceBox.value != clickToChoose) {
1020       runner.addJSFailure("[rate sync] resource.tag is wrong: "
1021           + resourceBox.value);
1022       result = false;
1023     }
1024     if (rateBox.value != "") {
1025       runner.addJSFailure("[rate sync] rate is wrong: "
1026           + rateBox.value);
1027       result = false;
1028     }
1029     return result;
1030   }
1031   quote = quote.QueryInterface(nsCI.aaIQuote);
1032   var date = new Date(quote.time / 1000);
1033   if (dateBox.value != date.toLocaleFormat('%Y-%m-%d')) {
1034     runner.addJSFailure("[rate sync] date is wrong: "
1035         + date);
1036     result = false;
1037   }
1038   if (rateBox.value != quote.rate) {
1039     runner.addJSFailure("[rate sync] rate is wrong: "
1040         + quote.rate);
1041     result = false;
1042   }
1044   return result;
1047 function rate_page_test(runner)
1049   runner.doCommand("cmd_manage_rate");
1050   runner.watchWindow = getFrame(runner).contentWindow;
1053 function rate_check(runner)
1055   var result = true;
1056   if (getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
1057       .currentURI.spec != "chrome://abstract/content/rate.xul") {
1058     runner.addJSFailure(" [rate page] wrong xul document");
1059     result = false;
1060   }
1061   var tree = getElement(runner, "page1.tree");
1062   if (! tree.view.QueryInterface(nsCI.aaIDataTreeView)) {
1063     runner.addJSFailure("[rate page] tree view assingment");
1064     result = false;
1065   }
1066   if (! rate_sync_check(runner))
1067     result = false;
1068   return result;
1071 function rate_page_check(runner)
1073   if (!rate_check(runner))
1074     runner.addJSFailure("[rate page] page out of sync");
1075   var tree = getElement(runner, "page1.tree");
1076   if (tree.view.rowCount != 0)
1077     runner.addJSFailure("[rate page] tree not empty");
1078   runner.doCommand("cmd_page1_new");
1079   if (! rate_sync_check(runner))
1080     runner.addJSFailure("[rate page] page out of sync");
1081   var date = getElement(runner, "quote.date");
1082   date.value = "2008-02-06";
1083   sendOnChange(date);
1084   if (! rate_sync_check(runner))
1085     runner.addJSFailure("[rate page] page out of sync");
1086   var rate = getElement(runner, "quote.rate");
1087   rate.value = "1.4995";
1088   sendOnInput(rate);
1089   if (! rate_sync_check(runner))
1090     runner.addJSFailure("[rate page] page out of sync");
1093 /* ask for resource from rate page */
1094 const rate_resource_contractID = "@aasii.org/test/rate-resource;1";
1095 const rate_resource_name = "aaVCRateResourceTest";
1096 const rate_resource_CID = Components.ID("{89919005-f3fb-4d35-8f35-fa0603defbdb}");
1098 function rate_resource_test(runner)
1100   sendOnClick(getElement(runner, "quote.resource"));
1101   runner.watchWindow = getFrame(runner).contentWindow;
1104 const rate_resource_discard_contractID = "@aasii.org/test/rate-resource-discard;1";
1105 const rate_resource_discard_name = "aaVCRateResourceDiscardTest";
1106 const rate_resource_discard_CID = Components.ID("{fd2c7c83-2551-44d4-a06f-b6562b622f7e}");
1108 function rate_resource_discard_check(runner)
1110   if (! rate_check(runner))
1111     runner.addJSFailure("[rate page] wrong init");
1113   if (getElement(runner, "quote.resource").value != clickToChoose)
1114     runner.addJSFailure("[rate page] discard failed");
1117 const rate_resource_submit_contractID = "@aasii.org/test/rate-resource-submit;1";
1118 const rate_resource_submit_name = "aaVCRateResourceSubmitTest";
1119 const rate_resource_submit_CID = Components.ID("{3668794f-4e7a-44d6-bb37-949dc576fba1}");
1121 function rate_resource_submit_check(runner)
1123   if (! rate_check(runner))
1124     runner.addJSFailure("[rate page] wrong page init");
1126   if (getElement(runner, "quote.resource").value != aaTestNames.ResourceTag[3])
1127     runner.addJSFailure("[rate page] submit failed:"
1128         + getElement(runner, "quote.resource").value);
1131 const rate_save_contractID = "@aasii.org/test/rate-save;1";
1132 const rate_save_name = "aaVCRateSaveTest";
1133 const rate_save_CID = Components.ID("{cc30d198-e1ce-4d24-889d-d93ed4857569}");
1135 function rate_save_test(runner)
1137   runner.doCommand("cmd_page1_save");
1138   if (! rate_check(runner))
1139     runner.addJSFailure("[rate save] page out of sync");
1142 const rate_digits_contractID = "@aasii.org/test/rate-digits;1";
1143 const rate_digits_name = "aaVCRateDigitsTest";
1144 const rate_digits_CID = Components.ID("{76c0d5aa-b122-4322-b139-89ad95c88163}");
1146 function rate_digits_test(runner)
1148   var tree = getElement(runner, "page1.tree");
1149   if (tree.view.getCellText(0,tree.columns[2]) != "1.4995")
1150     runner.addJSFailure("ledger.tree.line1.col1 failed:"
1151         + tree.view.getCellText(0,tree.columns[2]));
1154 /* test for general ledger page */
1155 const ledger_page_contractID = "@aasii.org/test/ledger-page;1";
1156 const ledger_page_name = "aaVCLedgerPageTest";
1157 const ledger_page_CID = Components.ID("{49b95893-a0e9-4e5e-9e8f-b2ab2398dccd}");
1159 function ledger_page_test(runner)
1161   runner.doCommand("cmd_report_ledger");
1162   runner.watchWindow = getFrame(runner).contentWindow;
1165 function ledger_check(runner)
1167   var result = true;
1168   if (getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
1169       .currentURI.spec != "chrome://abstract/content/ledger.xul") {
1170     runner.addJSFailure(" [ledger page] wrong xul document");
1171     return false;
1172   }
1173   var tree = getElement(runner, "ledger.tree");
1174   if (! tree) {
1175     runner.addJSFailure("[ledger page] tree view assingment");
1176     result = false;
1177   }
1178   return result;
1181 function ledger_page_check(runner)
1183   if (!ledger_check(runner)) {
1184     runner.addJSFailure("[ledger page] page out of sync");
1185     return;
1186   }
1187   var tree = getElement(runner, "ledger.tree");
1188   if (tree.view.rowCount != 6)
1189     runner.addJSFailure("[ledger page] wrong row count:" + tree.view.rowCount);
1190   if (tree.view.getCellText(0,tree.columns[0]) != "2008-02-04")
1191     runner.addJSFailure("ledger.tree.line1.col1 failed");
1192   if (tree.view.getCellText(1,tree.columns[0]) != "")
1193     runner.addJSFailure("ledger.tree.line2.col1 failed");
1194   if (tree.view.getCellText(2,tree.columns[0]) != "2008-02-05")
1195     runner.addJSFailure("ledger.tree.line3.col1 failed");
1196   if (tree.view.getCellText(3,tree.columns[0]) != "")
1197     runner.addJSFailure("ledger.tree.line4.col1 failed");
1198   if (tree.view.getCellText(4,tree.columns[0]) != "2008-02-06")
1199     runner.addJSFailure("ledger.tree.line5.col1 failed:"
1200         + tree.view.getCellText(4,tree.columns[0]));
1201   if (tree.view.getCellText(5,tree.columns[0]) != "")
1202     runner.addJSFailure("ledger.tree.line6.col1 failed");
1204   if (tree.view.getCellText(0,tree.columns[1]) != aaTestNames.ResourceTag[1])
1205     runner.addJSFailure("ledger.tree.line1.col2 failed: "
1206         + tree.view.getCellText(0,tree.columns[1]));
1207   if (tree.view.getCellText(1,tree.columns[1]) != "")
1208     runner.addJSFailure("ledger.tree.line2.col2 failed");
1209   if (tree.view.getCellText(2,tree.columns[1]) != aaTestNames.ResourceTag[1])
1210     runner.addJSFailure("ledger.tree.line3.col2 failed");
1211   if (tree.view.getCellText(3,tree.columns[1]) != "")
1212     runner.addJSFailure("ledger.tree.line4.col2 failed");
1213   if (tree.view.getCellText(4,tree.columns[1]) != aaTestNames.ResourceTag[0])
1214     runner.addJSFailure("ledger.tree.line5.col2 failed:"
1215         + tree.view.getCellText(4,tree.columns[1]));
1216   if (tree.view.getCellText(5,tree.columns[1]) != "")
1217     runner.addJSFailure("ledger.tree.line6.col2 failed");
1219   if (tree.view.getCellText(0,tree.columns[2]) != "300.00")
1220     runner.addJSFailure("ledger.tree.line1.col3 failed");
1221   if (tree.view.getCellText(1,tree.columns[2]) != "")
1222     runner.addJSFailure("ledger.tree.line2.col3 failed");
1223   if (tree.view.getCellText(2,tree.columns[2]) != "200.00")
1224     runner.addJSFailure("ledger.tree.line3.col3 failed");
1225   if (tree.view.getCellText(3,tree.columns[2]) != "")
1226     runner.addJSFailure("ledger.tree.line4.col3 failed");
1227   if (tree.view.getCellText(4,tree.columns[2]) != "20000.00")
1228     runner.addJSFailure("ledger.tree.line5.col3 failed:"
1229         + tree.view.getCellText(4,tree.columns[2]));
1230   if (tree.view.getCellText(5,tree.columns[2]) != "")
1231     runner.addJSFailure("ledger.tree.line6.col3 failed");
1233   if (tree.view.getCellText(0,tree.columns[3]) != creditTerm)
1234     runner.addJSFailure("ledger.tree.line1.col4 failed");
1235   if (tree.view.getCellText(1,tree.columns[3]) != debitTerm)
1236     runner.addJSFailure("ledger.tree.line2.col4 failed");
1237   if (tree.view.getCellText(2,tree.columns[3]) != creditTerm)
1238     runner.addJSFailure("ledger.tree.line3.col4 failed");
1239   if (tree.view.getCellText(3,tree.columns[3]) != debitTerm)
1240     runner.addJSFailure("ledger.tree.line4.col4 failed");
1241   if (tree.view.getCellText(4,tree.columns[3]) != creditTerm)
1242     runner.addJSFailure("ledger.tree.line5.col4 failed:"
1243         + tree.view.getCellText(4,tree.columns[3]));
1244   if (tree.view.getCellText(5,tree.columns[3]) != debitTerm)
1245     runner.addJSFailure("ledger.tree.line6.col3 failed");
1247   if (tree.view.getCellText(0,tree.columns[4]) != aaTestNames.FlowTag[0])
1248     runner.addJSFailure("ledger.tree.line1.col5 failed:"
1249         + tree.view.getCellText(0,tree.columns[4]));
1250   if (tree.view.getCellText(1,tree.columns[4]) != aaTestNames.FlowTag[1])
1251     runner.addJSFailure("ledger.tree.line2.col5 failed");
1252   if (tree.view.getCellText(2,tree.columns[4]) != aaTestNames.FlowTag[1])
1253     runner.addJSFailure("ledger.tree.line3.col5 failed");
1254   if (tree.view.getCellText(3,tree.columns[4]) != "c")
1255     runner.addJSFailure("ledger.tree.line4.col5 failed");
1256   if (tree.view.getCellText(4,tree.columns[4]) != "c")
1257     runner.addJSFailure("ledger.tree.line5.col5 failed:"
1258         + tree.view.getCellText(4,tree.columns[4]));
1259   if (tree.view.getCellText(5,tree.columns[4]) != "d")
1260     runner.addJSFailure("ledger.tree.line6.col5 failed");
1262   if (tree.view.getCellText(0,tree.columns[5]) != "100.00")
1263     runner.addJSFailure("ledger.tree.line1.col6 failed");
1264   if (tree.view.getCellText(1,tree.columns[5]) != "100.00")
1265     runner.addJSFailure("ledger.tree.line2.col6 failed");
1266   if (tree.view.getCellText(2,tree.columns[5]) != "100.00")
1267     runner.addJSFailure("ledger.tree.line3.col6 failed");
1268   if (tree.view.getCellText(3,tree.columns[5]) != "150.00")
1269     runner.addJSFailure("ledger.tree.line4.col6 failed");
1270   if (tree.view.getCellText(4,tree.columns[5]) != "1.00")
1271     runner.addJSFailure("ledger.tree.line5.col6 failed:"
1272         + tree.view.getCellText(4,tree.columns[5]));
1273   if (tree.view.getCellText(5,tree.columns[5]) != "1.00")
1274     runner.addJSFailure("ledger.tree.line6.col6 failed");
1276   if (tree.view.getCellText(0,tree.columns[6]) != "")
1277     runner.addJSFailure("ledger.tree.line1.col7 failed");
1278   if (tree.view.getCellText(1,tree.columns[6]) != "30000.00")
1279     runner.addJSFailure("ledger.tree.line2.col7 failed");
1280   if (tree.view.getCellText(2,tree.columns[6]) != "")
1281     runner.addJSFailure("ledger.tree.line3.col7 failed");
1282   if (tree.view.getCellText(3,tree.columns[6]) != "30000.00")
1283     runner.addJSFailure("ledger.tree.line4.col7 failed");
1284   if (tree.view.getCellText(4,tree.columns[6]) != "")
1285     runner.addJSFailure("ledger.tree.line5.col7 failed:"
1286         + tree.view.getCellText(4,tree.columns[6]));
1287   if (tree.view.getCellText(5,tree.columns[6]) != "20000.00")
1288     runner.addJSFailure("ledger.tree.line6.col7 failed");
1290   if (tree.view.getCellText(0,tree.columns[7]) != "30000.00")
1291     runner.addJSFailure("ledger.tree.line1.col8 failed");
1292   if (tree.view.getCellText(1,tree.columns[7]) != "")
1293     runner.addJSFailure("ledger.tree.line2.col8 failed");
1294   if (tree.view.getCellText(2,tree.columns[7]) != "20000.00")
1295     runner.addJSFailure("ledger.tree.line3.col8 failed");
1296   if (tree.view.getCellText(3,tree.columns[7]) != "")
1297     runner.addJSFailure("ledger.tree.line4.col8 failed");
1298   if (tree.view.getCellText(4,tree.columns[7]) != "20000.00")
1299     runner.addJSFailure("ledger.tree.line5.col8 failed:"
1300         + tree.view.getCellText(4,tree.columns[7]));
1301   if (tree.view.getCellText(5,tree.columns[7]) != "")
1302     runner.addJSFailure("ledger.tree.line6.col7 failed");
1305 /* test for amounts on transfer page - get to the page */
1306 const tasp_CID = Components.ID("{e5712fda-f8d6-47b2-a5ca-e4d9e3887c8f}");
1307 const tasp_contractID  = "@aasii.org/test/transfer-page-amounts1;1";
1308 const tasp_name = "aaVCTransferPageAmounts1Test";
1310 function tasp_select_from(runner)
1312   let page = getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
1313       .currentURI.spec;
1314   if (page != "chrome://abstract/content/transfer.xul")
1315     runner.addJSFailure("[transfer page amounts] wrong xul document: " + page);
1316   if (getElement(runner, "transfer.fromDebitAmount").value != "-")
1317     runner.addJSFailure("[transfer page amounts] wrong from Debit amount"
1318         + getElement(runner, "transfer.fromDebitAmount").value);
1319   if (getElement(runner, "transfer.fromCreditAmount").value != "-")
1320     runner.addJSFailure("[transfer page amounts] wrong from credit amount"
1321         + getElement(runner, "transfer.fromCreditAmount").value);
1322   if (getElement(runner, "transfer.toDebitAmount").value != "-")
1323     runner.addJSFailure("[transfer page amounts] wrong to Debit amount"
1324         + getElement(runner, "transfer.toDebitAmount").value);
1325   if (getElement(runner, "transfer.toCreditAmount").value != "-")
1326     runner.addJSFailure("[transfer page amounts] wrong to credit amount"
1327         + getElement(runner, "transfer.toCreditAmount").value);
1330 /* test for amounts on transfer page - select from flow */
1331 const tasff_CID = Components.ID("{5f5eb176-b640-4fd6-af2b-915db0311f06}");
1332 const tasff_contractID  = "@aasii.org/test/transfer-page-amounts2;1";
1333 const tasff_name = "aaVCTransferPageAmounts2Test";
1335 function tasff_check(runner)
1337   if (! transfer_check(runner))
1338     runner.addJSFailure("[transfer page amounts] wrong page init");
1339   if (getElement(runner, "transfer.fromDebitAmount").value != "20000.00")
1340     runner.addJSFailure("[transfer page amounts] wrong from Debit amount: "
1341         + getElement(runner, "transfer.fromDebitAmount").value);
1342   if (getElement(runner, "transfer.fromCreditAmount").value != "-")
1343     runner.addJSFailure("[transfer page amounts] wrong from credit amount: "
1344         + getElement(runner, "transfer.fromCreditAmount").value);
1347 /* test for amounts on transfer page - select to flow */
1348 const tastf_CID = Components.ID("{408876cd-4988-49bb-9e86-2d40dd7af921}");
1349 const tastf_contractID  = "@aasii.org/test/transfer-page-amounts3;1";
1350 const tastf_name = "aaVCTransferPageAmounts3Test";
1352 function tastf_check(runner)
1354   if (! transfer_check(runner))
1355     runner.addJSFailure("[transfer page amounts] wrong page init");
1356   if (getElement(runner, "transfer.toDebitAmount").value != "-")
1357     runner.addJSFailure("[transfer page amounts] wrong from Debit amount: "
1358         + getElement(runner, "transfer.toDebitAmount").value);
1359   if (getElement(runner, "transfer.toCreditAmount").value != "30000.00")
1360     runner.addJSFailure("[transfer page amounts] wrong from credit amount: "
1361         + getElement(runner, "transfer.toCreditAmount").value);