[view] Reinstall 'transcript' page test (bug #118)
[abstract.git] / app / test / aaTestAccountViews.js
blobb24f0d89c832dc7a530a6b385ba9080acdccbb4f
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(chart_page_CID, chart_page_contractID,
53       chart_page_name, chart_page_test, chart_page_check);
54   /*  1 */
55   this._add(chart_resource_CID, chart_resource_contractID, chart_resource_name,
56       chart_resource_test, resource_select_check);
57   /*  2 */
58   this._add(chart_resource_submit_CID, chart_resource_submit_contractID,
59       chart_resource_submit_name, resource_submit_test,
60       chart_resource_submit_check);
61   this._tests[2].instance.item = 0;
62   /*  3 */
63   this._repeat(0);
64   /*  4 */
65   this._add(transfer_page_CID, transfer_page_contractID,
66       transfer_page_name, transfer_page_test, transfer_page_check);
67   /*  5 */
68   this._add(transfer_to_CID, transfer_to_contractID, transfer_to_name,
69       transfer_to_test, flow_select_check);
70   /*  6 */
71   this._add(transfer_to_discard_CID, transfer_to_discard_contractID,
72       transfer_to_discard_name, flow_discard_test,
73       transfer_to_discard_check);
74   this._tests[6].instance.item = 0;
75   /*  7 */
76   this._repeat(5);
77   /*  8 */
78   this._add(transfer_to_create_CID, transfer_to_create_contractID,
79       transfer_to_create_name, transfer_to_create_test, resource_select_check);
80   /*  9 */
81   this._add(subflow_give_submit_CID, subflow_give_submit_contractID,
82       subflow_give_submit_name, resource_submit_test,
83       flow_check);
84   this._tests[9].instance.item = 1;
85   /* 10 */
86   this._add(subflow_take_select_CID, subflow_take_select_contractID,
87       subflow_take_select_name, flow_take_test, resource_select_check);
88   /* 11 */
89   this._add(subflow_take_submit_CID, subflow_take_submit_contractID,
90       subflow_take_submit_name, resource_submit_test,
91       flow_check);
92   this._tests[11].instance.item = 1;
93   /* 12 */
94   this._add(subflow_entity_select_CID, subflow_entity_select_contractID,
95       subflow_entity_select_name, flow_entity_test, entity_select_check);
96   /* 13 */
97   this._add(subflow_entity_submit_CID, subflow_entity_submit_contractID,
98       subflow_entity_submit_name, resource_submit_test,
99       flow_check);
100   this._tests[13].instance.item = 1;
101   /* 14 */
102   this._add(transfer_to_submit_CID, transfer_to_submit_contractID,
103       transfer_to_submit_name,  transfer_to_submit_test,
104       transfer_check);
105   this._tests[14].instance.item = 1;
106   /* 15 */
107   this._add(transfer_from_CID, transfer_from_contractID, transfer_from_name,
108       transfer_from_test, flow_select_check);
109   /* 16 */
110   this._add(transfer_from_discard_CID, transfer_from_discard_contractID,
111       transfer_from_discard_name, flow_discard_test,
112       transfer_from_discard_check);
113   /* 17 */
114   this._repeat(15);
115   /* 18 */
116   this._add(transfer_from_submit_CID, transfer_from_submit_contractID,
117       transfer_from_submit_name, flow_submit_test, transfer_from_submit_check);
118   this._tests[18].instance.item = 0;
119   /* 19 */
120   this._add(transfer_save_CID, transfer_save_contractID,
121       transfer_save_name, transfer_save_test);
122   /* 20 */
123   this._add(account_page_CID, account_page_contractID, account_page_name,
124       account_page_test, account_page_check);
125   /* 21 */
126   this._add(transcript_page_CID, transcript_page_contractID,
127       transcript_page_name, transcript_page_test, transcript_page_check);
128   /* 22 */
129   this._add(transcript_flow_CID, transcript_flow_contractID, transcript_flow_name,
130       transcript_flow_test, flow_select_check);
131   /* 23 */
132   this._add(tf_discard_CID, tf_discard_contractID, tf_discard_name,
133       flow_discard_test, transcript_flow_discard_check);
134   this._tests[23].instance.item = 0;
135   /* 24 */
136   this._repeat(22);
137   /* 25 */
138   this._add(tf_submit_CID, tf_submit_contractID, tf_submit_name,
139       flow_submit_test, transcript_flow_submit_check);
140   this._tests[25].instance.item = 1;
141   /* 26 */
142   this._add(transcript_load_CID, transcript_load_contractID,
143       transcript_load_name, transcript_load_test);
144   /* 27 */
145   this._add(transcript_after_flow_CID, transcript_after_flow_contractID,
146       transcript_after_flow_name, transcript_after_flow_test);
147   /* 28 */
148   this._add(transcript_income_flow_CID, transcript_income_flow_contractID,
149       transcript_income_flow_name, transcript_income_flow_test);
152 /* Module-specific Defines and Utilities */
153 const contentId = "content";
155 /* Account Page Test */
156 const account_page_contractID = "@aasii.org/abstract/test/account-balance;1";
157 const account_page_name = "aaAccountPageTest";
158 const account_page_CID = Components.ID("{3391fcd8-e122-4e31-9162-f114fe2d843d}");
160 function account_page_test(runner)
162   runner.doCommand("cmd_report_balances");
163   runner.watchWindow = getFrame(runner).contentWindow;
166 function account_page_check(runner)
168   var tree = getElement(runner, "balances.tree");
169   var view = tree.view;
170   var date = getElement(runner, "filter.date");
171   date.value = "2008-02-06";
172   sendOnChange(date);
173   if (!tree)
174     runner.addJSFailure("[balances page] failed");
176   if (view.getCellText(0,tree.columns[3]) != "")
177     runner.addJSFailure("transcript.tree.line1.col4 failed");
178   if (view.getCellText(1,tree.columns[3]) != "100.00")
179     runner.addJSFailure("transcript.tree.line2.col4 failed");
180   if (view.getCellText(2,tree.columns[3]) != "10000.00")
181     runner.addJSFailure("transcript.tree.line3.col4 failed");
182   if (view.getCellText(3,tree.columns[3]) != "20000.00")
183     runner.addJSFailure("transcript.tree.line4.col4 failed");
184   if (view.getCellText(4,tree.columns[3]) != "")
185     runner.addJSFailure("transcript.tree.line5.col4 failed");
187   if (view.getCellText(0,tree.columns[4]) != "30000.00")
188     runner.addJSFailure("transcript.tree.line1.col4 failed");
189   if (view.getCellText(1,tree.columns[4]) != "")
190     runner.addJSFailure("transcript.tree.line2.col4 failed");
191   if (view.getCellText(2,tree.columns[4]) != "")
192     runner.addJSFailure("transcript.tree.line3.col4 failed");
193   if (view.getCellText(3,tree.columns[4]) != "")
194     runner.addJSFailure("transcript.tree.line4.col4 failed");
195   if (view.getCellText(4,tree.columns[4]) != "0.00")
196     runner.addJSFailure("transcript.tree.line5.col4 failed");
198   getElement(runner, "units.mode").selectedIndex = 1;
200   if (tree.view.getCellText(0,tree.columns[0]) != "a")
201     runner.addJSFailure("balance.tree.line1.col1 failed");
202   if (tree.view.getCellText(0,tree.columns[1]) != "K")
203     runner.addJSFailure("balance.tree.line1.col2 failed");
204   if (tree.view.getCellText(0,tree.columns[2]) != "x")
205     runner.addJSFailure("balance.tree.line1.col3 failed");
206   if (tree.view.getCellText(0,tree.columns[3]) != "")
207     runner.addJSFailure("balance.tree.line3.col4 failed");
208   if (tree.view.getCellText(0,tree.columns[4]) != "30000.00")
209     runner.addJSFailure("balance.tree.line1.col5 failed");
210   if (tree.view.getCellText(3,tree.columns[3]) != "20000.00")
211     runner.addJSFailure("balance.tree.line3.col4 failed");
213   if (getElement(runner, "footer.sumDebit").value != "40000.00")
214     runner.addJSFailure("balance.totalAssets is wrong: "
215         + getElement(runner, "footer.sumDebit").value);
216   if (getElement(runner, "footer.sumCredit").value != "40000.00")
217     runner.addJSFailure("balance.totalLiabilities is wrong: "
218         + getElement(runner, "footer.sumCredit").value);
221 /* Transcript Page Test */
222 const transcript_page_contractID = "@aasii.org/abstract/test/account-transcript;1";
223 const transcript_page_name = "aaTranscriptPageTest";
224 const transcript_page_CID = Components.ID("{d7a1753e-7d74-4f8a-940d-317d37c369ee}");
226 function transcript_page_test(runner)
228   runner.doCommand("cmd_report_transcript");
229   runner.watchWindow = getFrame(runner).contentWindow;
232 function transcript_check(runner)
234   if (! getElement(runner, "transcript.tree"))
235     runner.addJSFailure("[transcript page] tree failed");
236   if (! getElement(runner, "filter.flow"))
237     runner.addJSFailure("[transcript page] flow link failed");
240 const transcript1DateFrom = "2008-02-04";
241 const transcript1DateTo = "2008-02-06";
243 function transcript_page_check(runner)
245   transcript_check(runner);
246   var tree = getElement(runner, "transcript.tree");
247   // XXX 403202 'Unflexing' the tree speeds up reflow significantly
248   if (tree && tree.hasAttribute("flex"))
249     tree.removeAttribute("flex");
251   getElement(runner, "filter.dateFrom").value = transcript1DateFrom;
252   sendOnChange(getElement(runner, "filter.dateFrom"));
253   getElement(runner, "filter.dateTo").value = transcript1DateTo;
254   sendOnChange(getElement(runner, "filter.dateTo"));
255   if (getElement(runner, "filter.cancel").hasAttribute("collapsed"))
256     runner.addJSFailure("[transcript page] 'change' command");
259 /* ask for flow from transcript page */
260 const transcript_flow_contractID = "@aasii.org/test/transcript-flow;1";
261 const transcript_flow_name = "aaVCTranscriptFlowTest";
262 const transcript_flow_CID = Components.ID("{b4fe65f6-c55e-491c-a039-27c0beff12cc}");
264 function transcript_flow_test(runner)
266   sendOnClick(getElement(runner, "filter.flow"));
267   runner.watchWindow = getFrame(runner).contentWindow;
270 const tf_discard_contractID = "@aasii.org/test/transcript-flow-discard;1";
271 const tf_discard_name = "aaVCTranscriptFlowDiscardTest";
272 const tf_discard_CID = Components.ID("{a122d947-3fb2-4796-87fe-22c67706bd9a}");
274 function transcript_flow_discard_check(runner)
276   transcript_check(runner);
277   if (getElement(runner, "filter.flow").value != "click to choose")
278     runner.addJSFailure("[transcript->flow] discard failed");
281 const tf_submit_contractID = "@aasii.org/test/transcript-flow-submit;1";
282 const tf_submit_name = "aaVCTranscriptFlowSubmitTest";
283 const tf_submit_CID = Components.ID("{3197a8bb-1fd1-453e-98d8-6bc7996552a5}");
285 function transcript_flow_submit_check(runner)
287   transcript_check(runner);
288   if (getElement(runner, "filter.flow").value != "b")
289     runner.addJSFailure("[transcript->flow] submit failed");
292 /* submit/discard from flow page */
293 function flow_select_check(runner)
295   flow_check(runner);
296   var tree = getElement(runner, "page1.tree");
297   // XXX 403202 'Unflexing' the tree speeds up reflow significantly
298   if (tree && tree.hasAttribute("flex"))
299     tree.removeAttribute("flex");
301   if (getAnnoElement(runner, "header", "header.discard")
302       .getAttribute("collapsed") == "true")
303     runner.addJSFailure("flow.discard button should be visible");
304   if (getAnnoElement(runner, "header", "header.submit")
305       .getAttribute("collapsed") == "true")
306     runner.addJSFailure("flow.submit button should be visible");
307   if (getElement(runner, "cmd_page1_discard")
308       .getAttribute("disabled") == "true")
309     runner.addJSFailure("flow_discard command should be enabled");
310   if (getElement(runner, "cmd_page1_submit")
311       .getAttribute("disabled") == "true")
312     runner.addJSFailure("flow_submit command should be enabled");
315 function flow_discard_test(runner)
317   getElement(runner,"page1.tree").view.selection.select(this.item);
318   runner.doCommand("cmd_page1_discard");
319   runner.watchWindow = getFrame(runner).contentWindow;
322 function flow_submit_test(runner)
324   if (this.item < 0)
325     this.item = getElement(runner, "page1.tree").view.rowCount + this.item;
326   getElement(runner,"page1.tree").view.selection.select(this.item);
327   runner.doCommand("cmd_page1_submit");
328   runner.watchWindow = getFrame(runner).contentWindow;
331 function flow_last_line_check(runner)
333   var tree = getElement(runner, "page1.tree");
334   var view = tree.view;
335   if (view.getCellText(view.rowCount - 1, tree.columns[0])
336       != "profit and loss")
337     runner.addJSFailure("[flow page] wrong tag on the last line");
340 /* Transcript Load Test */
341 const transcript_load_contractID = "@aasii.org/abstract/test/transcript-load;1";
342 const transcript_load_name = "aaTranscriptLoadTest";
343 const transcript_load_CID = Components.ID("{335e1a8e-f8a0-4a9d-850b-0404cd2db9e5}");
345 function transcript_load_test(runner)
347   var loadLnk = getElement(runner, "transcript.load");
348   var startDate = getElement(runner, "filter.dateFrom");
349   var endDate = getElement(runner, "filter.dateTo");
350   var tree = getElement(runner, "transcript.tree");
351   var view = tree.view.QueryInterface(nsCI.nsITreeView);
352   
353   sendOnClick(loadLnk);
355   if (getElement(runner, "filter.group").getAttribute("collapsed") != "true")
356     runner.addJSFailure("[transcript load] filter not hidden");
358   if (getElement(runner, "header.flow").value != "b")
359     runner.addJSFailure("[transcript load] wrong flow: "
360         + getElement(runner, "header.flow").value);
361   if (getElement(runner, "header.dateFrom").value != transcript1DateFrom)
362     runner.addJSFailure("[transcript load] [1] wrong 'from' date");
363   if (getElement(runner, "header.sumDebitFrom").value != "0.00")
364     runner.addJSFailure("[transcript load] [1] wrong 'from' debit");
365   if (getElement(runner, "header.sumCreditFrom").value != "0.00")
366     runner.addJSFailure("[transcript load] [1] wrong 'from' credit");
367   if (getElement(runner, "header.dateTo").value != transcript1DateTo)
368     runner.addJSFailure("[transcript load] [1] wrong 'to' date");
369   if (getElement(runner, "header.sumDebitTo").value != "100.00")
370     runner.addJSFailure("[transcript load] [1] wrong 'to' debit");
371   if (getElement(runner, "header.sumCreditTo").value != "0.00")
372     runner.addJSFailure("[transcript load] [1] wrong 'to' credit");
374   if (view.getCellText(0,tree.columns[0]) != "2008-02-04")
375     runner.addJSFailure("transcript.tree.line1.col1 failed");
376   if (view.getCellText(1,tree.columns[0]) != "2008-02-05")
377     runner.addJSFailure("transcript.tree.line2.col1 failed");
379   if (view.getCellText(0,tree.columns[1]) != "a")
380     runner.addJSFailure("transcript.tree.line1.col2 failed");
381   if (view.getCellText(1,tree.columns[1]) != "c")
382     runner.addJSFailure("transcript.tree.line2.col2 failed");
384   if (view.getCellText(0,tree.columns[2]) != "300.00")
385     runner.addJSFailure("transcript.tree.line1.col3 failed");
386   if (view.getCellText(1,tree.columns[2]) != "")
387     runner.addJSFailure("transcript.tree.line2.col3 failed");
389   if (view.getCellText(0,tree.columns[3]) != "")
390     runner.addJSFailure("transcript.tree.line1.col4 failed");
391   if (view.getCellText(1,tree.columns[3]) != "200.00")
392     runner.addJSFailure("transcript.tree.line2.col4 failed");
394   getElement(runner, "units.mode").selectedIndex = 1;
396   if (view.getCellText(0,tree.columns[2]) != "30000.00")
397     runner.addJSFailure("transcript.tree.line1.col3 failed");
398   if (view.getCellText(1,tree.columns[2]) != "")
399     runner.addJSFailure("transcript.tree.line2.col3 failed");
401   if (view.getCellText(0,tree.columns[3]) != "")
402     runner.addJSFailure("transcript.tree.line1.col4 failed");
403   if (view.getCellText(1,tree.columns[3]) != "20000.00")
404     runner.addJSFailure("transcript.tree.line2.col4 failed");
407 /* Tests for Flow-in-Transcript-Selection bug #122 */
408 const transcript_after_flow_contractID = "@aasii.org/abstract/test/trasncript-after-flow;1";
409 const transcript_after_flow_name = "aaTranscriptAfterFlowP1";
410 const transcript_after_flow_CID = Components.ID("{b9c0df9d-6036-43c7-b0b4-d4e2f3092601}");
412 function transcript_after_flow_test(runner)
414   var flows = getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
415     .sessionHistory.createQuery("@aasii.org/storage/load-flow;1")
416     .QueryInterface(nsCI.aaILoadQuery);
417   flows.load();
418   getFrame(runner).contentWindow.wrappedJSObject.gView.report.flow = flows
419     .queryElementAt(3, nsCI.aaIFlow);
421   var tree = getElement(runner, "transcript.tree");
422   var view = tree.view.QueryInterface(nsCI.nsITreeView);
423   
424   if (view.getCellText(0,tree.columns[1]) != "a")
425     runner.addJSFailure("transcript.tree.line3.col2 failed");
428 /* Tests for income-flow display */
429 const transcript_income_flow_contractID = "@aasii.org/abstract/test/trasncript-income-flow;1";
430 const transcript_income_flow_name = "aaTranscriptIncomeFlowP1";
431 const transcript_income_flow_CID = Components.ID("{07f18646-a3be-4ab5-9edd-7b2b899f00b8}");
433 function transcript_income_flow_test(runner)
435   var loadLnk = getElement(runner, "transcript.load");
436   var startDate = getElement(runner, "filter.dateFrom");
437   var endDate = getElement(runner, "filter.dateTo");
438   var tree = getElement(runner, "transcript.tree");
439   var view = tree.view.QueryInterface(nsCI.nsITreeView);
440   
441   getFrame(runner).contentWindow.wrappedJSObject.gView.report.flow =
442     Components.classes["@aasii.org/base/income-flow;1"]
443     .createInstance(nsCI.aaIFlow);
445   startDate.value = "2008-02-04";
446   endDate.value = "2008-02-06";
448   sendOnClick(loadLnk);
450   if (getElement(runner, "header.dateFrom").value != "2008-02-04")
451     runner.addJSFailure("[transcript load] [2] wrong 'from' date");
452   if (getElement(runner, "header.sumDebitFrom").value != "0.00")
453     runner.addJSFailure("[transcript load] [2] wrong 'from' debit");
454   if (getElement(runner, "header.sumCreditFrom").value != "0.00")
455     runner.addJSFailure("[transcript load] [2] wrong 'from' credit");
456   if (getElement(runner, "header.dateTo").value != "2008-02-06")
457     runner.addJSFailure("[transcript load] [2] wrong 'to' date");
458   if (getElement(runner, "header.sumDebitTo").value != "0.00")
459     runner.addJSFailure("[transcript load] [2] wrong 'to' debit");
460   if (getElement(runner, "header.sumCreditTo").value != "10000.00")
461     runner.addJSFailure("[transcript load] [2] wrong 'to' credit");
462   if (view.rowCount != 1)
463     runner.addJSFailure("[transcript load] [2] line count");
465   if (view.getCellText(0,tree.columns[0]) != "2008-02-05")
466     runner.addJSFailure("transcript.tree.line1.col1 failed");
468   if (view.getCellText(0,tree.columns[1]) != "c")
469     runner.addJSFailure("transcript.tree.line1.col2 failed");
471   if (view.getCellText(0,tree.columns[2]) != "")
472     runner.addJSFailure("transcript.tree.line1.col3 failed");
474   if (view.getCellText(0,tree.columns[3]) != "10000.00")
475     runner.addJSFailure("transcript.tree.line1.col4 failed");
478 /* Chart Page Test */
479 const chart_page_contractID = "@aasii.org/abstract/test/account-chart;1";
480 const chart_page_name = "aaChartPageTest";
481 const chart_page_CID = Components.ID("{9166dd77-6add-4104-a75e-cbdc41c6d3df}");
483 function chart_page_test(runner)
485   runner.doCommand("cmd_manage_chart");
486   runner.watchWindow = getFrame(runner).contentWindow;
489 function chart_sync_check(runner)
491   var result = true;
492   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
493   var quote = wnd.gView.quote;
494   var loaded = wnd.gLoaded;
495   if (! quote) {
496     runner.addJSFailure(" no quote object");
497     return false;
498   }
500   if (quote.resource && quote.resource.tag
501       != getElement(runner, "chart.resource").value)
502     runner.addJSFailure(" quote.resource is wrong");
504   try {
505     var time = new Date(quote.time / 1000);
506     if (getElement(runner, "chart.date").value != time
507         .toLocaleFormat('%Y-%m-%d')) {
508       runner.addJSFailure("  'date' is wrong: " + getElement(runner,
509             "chart.date").value + " - " + time.toLocaleFormat('%Y-%m-%d'));
510       result = false;
511     }
512   } catch (e) {
513     runner.addJSFailure(" date is wrong:" + e.message);
514     result = false;
515   }
517   if ( loaded ^ getElement(runner, "chart.set").hasAttribute("collapsed")) {
518     runner.addJSFailure(" chart.set command out of sync");
519     result = false;
520   }
522   return result;
525 function chart_check(runner)
527   var result = true;
528   if (getFrame(runner).contentWindow.location.href !=
529       "chrome://abstract/content/chart.xul") {
530     runner.addJSFailure(" [chart] wrong xul document");
531     return false;
532   }
534   if ( ! chart_sync_check(runner) )
535     return false;
537   return result;
540 function chart_page_check(runner)
542   if (! chart_check(runner))
543     runner.addJSFailure("[chart page]");
546 /* ask for resource from chart page */
547 const chart_resource_contractID = "@aasii.org/test/chart-resource;1";
548 const chart_resource_name = "aaVCChartResourceTest";
549 const chart_resource_CID = Components.ID("{0a83a675-ebbd-4796-9147-5a423b83d20b}");
551 function chart_resource_test(runner)
553   sendOnClick(getElement(runner, "chart.resource"));
554   runner.watchWindow = getFrame(runner).contentWindow;
557 const chart_resource_submit_contractID = "@aasii.org/test/chart-resource-submit;1";
558 const chart_resource_submit_name = "aaVCChartResourceSubmitTest";
559 const chart_resource_submit_CID = Components.ID("{5b81d3f1-55a1-4f37-b608-992d8f094741}");
561 function chart_resource_submit_check(runner)
563   if (! chart_check(runner))
564     runner.addJSFailure("[chart->resource] wrong page init");
566   if (getElement(runner, "chart.resource").value != "x")
567     runner.addJSFailure("[chart->resource] submit failed: "
568         + getElement(runner, "chart.resource").value);
570   getElement(runner, "chart.date").value = "2007-08-29";
571   sendOnChange(getElement(runner, "chart.date"));
572   if ( ! chart_sync_check(runner))
573     runner.addJSFailure("[chart->date] out of sync");
574   sendOnClick(getElement(runner, "chart.set"));
575   if ( ! chart_sync_check(runner))
576     runner.addJSFailure("[chart->date] out of sync");
579 /* Transfer Page Test */
580 const transfer_page_contractID = "@aasii.org/abstract/test/account-transfer;1";
581 const transfer_page_name = "aaTransferPageTest";
582 const transfer_page_CID = Components.ID("{950daefb-95ba-4960-a11a-b88af6cf6cad}");
584 function transfer_page_test(runner)
586   runner.doCommand("cmd_process_transfer");
587   runner.watchWindow = getFrame(runner).contentWindow;
590 function transfer_sync_check(runner)
592   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
593   var result = true;
594   if (! wnd) {
595     runner.addJSFailure("[transfer sync] getting window");
596     return false;
597   }
599   if (! wnd.gFact) {
600     runner.addJSFailure("[transfer sync] getting fact object");
601     return false;
602   }
604   if (getElement(runner, "transfer.fromFlow").value != (wnd.gFact.takeFrom ? 
605         wnd.gFact.takeFrom.tag : "click to choose")) {
606     runner.addJSFailure("  'fromFlow.tag' is wrong:" + getElement(runner,
607           "transfer.fromFlow").value);
608     result = false;
609   }
611   if (getElement(runner, "transfer.toFlow").value != (wnd.gFact.giveTo ? 
612         wnd.gFact.giveTo.tag : "click to choose")) {
613     runner.addJSFailure("  'toFlow.tag' is wrong: " + getElement(runner,
614           "transfer.toFlow").value);
615     result = false;
616   }
618   if (getElement(runner, "transfer.amount").value != wnd.gFact.amount) {
619     runner.addJSFailure("  'amount' is wrong: " + getElement(runner,
620           "transfer.amount").value);
621     result = false;
622   }
624   var time = new Date(wnd.gEvent.time / 1000);
625   if (getElement(runner, "transfer.date").value != time
626       .toLocaleFormat('%Y-%m-%d')) {
627     runner.addJSFailure("  'date' is wrong: " + getElement(runner,
628           "transfer.date").value + " - " + time.toLocaleFormat('%Y-%m-%d'));
629     result = false;
630   }
632   if ((wnd.gTransaction && (getElement(runner, "transfer.value").value
633         != wnd.gTransaction.value.toFixed(2))) || !wnd.gTransaction
634       && (getElement(runner, "transfer.value").value != "")) {
635       runner.addJSFailure("  'value' is wrong: " + getElement(runner,
636             "transfer.value").value);
637       result = false;
638   }
640   return result;
643 function transfer_check(runner)
645   var result = true;
646   if (getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
647       .currentURI.spec != "chrome://abstract/content/transfer.xul") {
648     runner.addJSFailure(" [transfer] wrong xul document");
649     return false;
650   }
651   if (! transfer_sync_check(runner)) {
652     runner.addJSFailure(" [transfer] page out of sync");
653     result = false;
654   }
656   return result;
659 function transfer_page_check(runner)
661   if (! transfer_check(runner))
662     runner.addJSFailure("[transfer page] wrong initialization");
664   if (getElement(runner, "transfer.amount").value != "0")
665     runner.addJSFailure("  'amount' is wrong: " + getElement(runner,
666           "transfer.amount").value);
668   var junk = Components.classes["@aasii.org/base/flow;1"].createInstance(nsCI.aaIFlow);
669   junk.tag = "junk";
670   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
671   wnd.gFact.takeFrom = junk;
672   wnd.gFact.giveTo = junk;
675 /* ask for 'from' flow from transfer page */
676 const transfer_from_contractID = "@aasii.org/test/transfer-from;1";
677 const transfer_from_name = "aaVCTransferFromTest";
678 const transfer_from_CID = Components.ID("{7ad5abf7-53b9-468d-b50c-4d9614a9dc14}");
680 function transfer_from_test(runner)
682   sendOnClick(getElement(runner, "transfer.fromFlow"));
683   runner.watchWindow = getFrame(runner).contentWindow;
686 const transfer_from_discard_contractID = "@aasii.org/test/transfer-from-discard;1";
687 const transfer_from_discard_name = "aaVCTransferFromDiscardTest";
688 const transfer_from_discard_CID = Components.ID("{ca063e94-1b9c-4e53-bf25-9fa8af605def}");
690 function transfer_from_discard_check(runner)
692   if (! transfer_check(runner))
693     runner.addJSFailure("[transfer->fromFlow] wrong init");
695   if (getElement(runner, "transfer.fromFlow").value != "junk")
696     runner.addJSFailure("[transfer->fromFlow] discard failed");
699 const transfer_from_submit_contractID = "@aasii.org/test/transfer-from-submit;1";
700 const transfer_from_submit_name = "aaVCTransferFromSubmitTest";
701 const transfer_from_submit_CID = Components.ID("{aaf7ec49-e9aa-45a8-b630-56b6659fa6ad}");
703 function transfer_from_submit_check(runner)
705   if (! transfer_check(runner))
706     runner.addJSFailure("[transfer->fromFlow] wrong page init");
708   if (getElement(runner, "transfer.fromFlow").value != "a")
709     runner.addJSFailure("[transfer->fromFlow] submit failed:"
710         + getElement(runner, "transfer.fromFlow").value);
713 /* ask for 'to' flow from transfer page */
714 const transfer_to_contractID = "@aasii.org/test/transfer-to;1";
715 const transfer_to_name = "aaVCTransferToTest";
716 const transfer_to_CID = Components.ID("{3c13bbbd-927b-4b67-be0a-2f80691bed1e}");
718 function transfer_to_test(runner)
720   sendOnClick(getElement(runner, "transfer.toFlow"));
721   runner.watchWindow = getFrame(runner).contentWindow;
724 const transfer_to_discard_contractID = "@aasii.org/test/transfer-to-discard;1";
725 const transfer_to_discard_name = "aaVCTransferToDiscardTest";
726 const transfer_to_discard_CID = Components.ID("{a04d7093-663b-4c24-9c96-028c67b89df3}");
728 function transfer_to_discard_check(runner)
730   if (! transfer_check(runner))
731     runner.addJSFailure("[transfer->toFlow] wrong init");
733   if (getElement(runner, "transfer.toFlow").value != "junk")
734     runner.addJSFailure("[transfer->toFlow] discard failed");
737 const transfer_to_create_contractID = "@aasii.org/test/transfer-to-create;1";
738 const transfer_to_create_name = "aaVCTransferToCreateTest";
739 const transfer_to_create_CID = Components.ID("{4c2eed92-0acd-4a60-9003-13e558ce961e}");
741 function transfer_to_create_test(runner)
743   flow_last_line_check(runner);
744   runner.doCommand("cmd_page1_new");
745   runner.doCommand("cmd_flow_give");
746   runner.watchWindow = getFrame(runner).contentWindow;
749 const subflow_give_submit_contractID = "@aasii.org/test/subflow-give-submit;1";
750 const subflow_give_submit_name = "aaVCSubflowGiveSubmitTest";
751 const subflow_give_submit_CID = Components.ID("{9daed633-4b08-4220-8931-4152f7bc5066}");
753 const subflow_take_submit_contractID = "@aasii.org/test/subflow-take-submit;1";
754 const subflow_take_submit_name = "aaVCSubflowtakeSubmitTest";
755 const subflow_take_submit_CID = Components.ID("{6b652c77-8368-42ca-9768-8376bad338ae}");
757 const subflow_take_select_contractID = "@aasii.org/test/subflow-take-select;1";
758 const subflow_take_select_name = "aaVCSubflowtakeSelectTest";
759 const subflow_take_select_CID = Components.ID("{479b48f0-a20f-488d-b219-dbfee74b15bd}");
761 const subflow_entity_submit_contractID = "@aasii.org/test/subflow-entity-submit;1";
762 const subflow_entity_submit_name = "aaVCSubflowGiveSubmitTest";
763 const subflow_entity_submit_CID = Components.ID("{316884a0-4623-4c49-b214-819bc7b98bc6}");
765 const subflow_entity_select_contractID = "@aasii.org/test/subflow-entity-select;1";
766 const subflow_entity_select_name = "aaVCSubflowGiveSelectTest";
767 const subflow_entity_select_CID = Components.ID("{63ecefa6-b153-4d83-a812-f23ae777d0f0}");
769 const transfer_to_submit_contractID = "@aasii.org/test/transfer-to-submit;1";
770 const transfer_to_submit_name = "aaVCTransferToSubmitTest";
771 const transfer_to_submit_CID = Components.ID("{dbd1150c-c80c-4a95-8a02-2906c0d06dd3}");
773 function transfer_to_submit_test(runner)
775   getElement(runner, "flow.tag").value = "b";
776   sendOnInput(getElement(runner, "flow.tag"));
778   getElement(runner, "flow.rate").value = "1.0";
779   sendOnInput(getElement(runner, "flow.rate"));
781   runner.doCommand("cmd_page1_save");
782   add_flow_when_selecting_check(runner);
783   if (this.item < 0)
784     this.item = getElement(runner, "page1.tree").view.rowCount + this.item;
785   getElement(runner,"page1.tree").view.selection.select(this.item);
786   runner.doCommand("cmd_page1_submit");
787   runner.watchWindow = getFrame(runner).contentWindow;
790 /* ask for 'to' flow from transfer page */
791 const transfer_save_contractID = "@aasii.org/test/transfer-save;1";
792 const transfer_save_name = "aaVCTransferSaveTest";
793 const transfer_save_CID = Components.ID("{bcb12042-4b82-4e71-949b-228b444e344c}");
795 function transfer_save_test(runner)
797   var amount = getElement(runner, "transfer.amount");
798   amount.value = "300";
799   sendOnInput(amount);
800   if (! transfer_sync_check(runner))
801     runner.addJSFailure("[transfer save] page out of sync");
802   var date = getElement(runner, "transfer.date");
803   date.value = "2008-02-04";
804   sendOnChange(date);
805   if (! transfer_sync_check(runner))
806     runner.addJSFailure("[transfer save] page out of sync");
808   var commit = getElement(runner, "transfer.commit");
809   sendOnClick(commit);
810   if (! transfer_sync_check(runner))
811     runner.addJSFailure("[transfer save] page out of sync");
812   var value = getElement(runner, "transfer.value");
813   if (value.value != "30000.00")
814     runner.addJSFailure("[transfer save] wrong value:" + value.value);
815   var earnings = getElement(runner, "transfer.earnings");
816   if (earnings.value != "")
817     runner.addJSFailure("[transfer save] wrong earnings:" + earnings.value);
818   if (getElement(runner,"transfer.commit").getAttribute("disabled") != "true")
819     runner.addJSFailure("[transfer save] 'commit' not disabled");
820   var reset = getElement(runner, "transfer.reset");
821   sendOnClick(reset);
822   if (getElement(runner,"transfer.commit").hasAttribute("disabled"))
823     runner.addJSFailure("[transfer save] 'commit' not enabled");
825   /* Prepare direct database access */
826   var wnd = getFrame(runner).contentWindow.wrappedJSObject;
827   var session = getFrame(runner).docShell.QueryInterface(nsCI.nsIWebNavigation)
828     .sessionHistory;
829   var entities = session.createQuery("@aasii.org/storage/load-entity;1")
830     .QueryInterface(nsCI.aaILoadQuery);
831   entities.load();
832   var resources = session.createQuery("@aasii.org/storage/load-resource;1")
833     .QueryInterface(nsCI.aaILoadQuery);
834   resources.load();
835   var flow = Components.classes["@aasii.org/base/flow;1"]
836     .createInstance(nsCI.aaIFlow);
838   /* Create flow 'c' */
839   flow.tag = "c";
840   flow.entity = entities.queryElementAt(2, nsCI.aaIEntity);
841   flow.giveResource = resources.queryElementAt(1, nsCI.aaIResource);
842   flow.takeResource = resources.queryElementAt(0, nsCI.aaIResource);
843   flow.rate = 150;
844   session.save(flow, null);
846   /* Create flow 'd' */
847   flow = Components.classes["@aasii.org/base/flow;1"]
848     .createInstance(nsCI.aaIFlow);
849   flow.tag = "d";
850   flow.entity = entities.queryElementAt(3, nsCI.aaIEntity);
851   flow.giveResource = resources.queryElementAt(0, nsCI.aaIResource);
852   flow.takeResource = resources.queryElementAt(0, nsCI.aaIResource);
853   flow.rate = 1;
854   session.save(flow, null);
856   /* Load flows */
857   var flows = session.createQuery("@aasii.org/storage/load-flow;1")
858     .QueryInterface(nsCI.aaILoadQuery);
859   flows.load();
861   /* Add transfer 'b'->'c' of 200 */
862   wnd.gFact.takeFrom = flows.queryElementAt(1, nsCI.aaIFlow);
863   wnd.gFact.giveTo = flows.queryElementAt(2, nsCI.aaIFlow);
864   amount.value = "200";
865   sendOnInput(amount);
866   date.value = "2008-02-05";
867   sendOnChange(date);
868   sendOnClick(commit);
869   if (value.value != "20000.00")
870     runner.addJSFailure("[transfer save] wrong value:" + value.value);
871   if (earnings.value != "10000.00")
872     runner.addJSFailure("[transfer save] wrong earnings:" + earnings.value);
873   sendOnClick(reset);
875   /* Add transfer 'c'->'d' of 20000 */
876   wnd.gFact.takeFrom = flows.queryElementAt(2, nsCI.aaIFlow);
877   wnd.gFact.giveTo = flows.queryElementAt(3, nsCI.aaIFlow);
878   amount.value = "20000";
879   sendOnInput(amount);
880   date.value = "2008-02-06";
881   sendOnChange(date);
882   sendOnClick(commit);
883   if (value.value != "20000.00")
884     runner.addJSFailure("[transfer save] wrong value:" + value.value);
885   if (earnings.value != "")
886     runner.addJSFailure("[transfer save] wrong earnings:" + earnings.value);
889 /* test for bug 128 */
890 function add_flow_when_selecting_check(runner)
892   var tree = getElement(runner, "page1.tree");
893   var view = tree.view;
894   
895   if (getElement(runner, "page1.browseSet").hasAttribute("disabled"))
896     runner.addJSFailure("edit status - bug 128 regression");
897   if (view.getCellText(view.selection.currentIndex,tree.columns[0])
898       != "b")
899     runner.addJSFailure("selection - bug 128 regression");
900   tree.view.selection.select(0);
901   if (getElement(runner, "flow.rate").value != "0.01")
902     runner.addJSFailure("rate switch - bug 129 regression");