]> git.donarmstrong.com Git - dactyl.git/blob - common/tests/functional/testHelpCommands.js
Import 1.0rc1 supporting Firefox up to 11.*
[dactyl.git] / common / tests / functional / testHelpCommands.js
1 const utils = require("utils");
2 const { module } = utils;
3
4 var jumlib = module("resource://mozmill/modules/jum.js");
5 var dactyllib = module("dactyl");
6
7 const { Services } = module("resource://gre/modules/Services.jsm");
8
9 var setupModule = function (module) {
10     controller = mozmill.getBrowserController();
11     dactyl = new dactyllib.Controller(controller);
12 };
13
14 var teardownModule = function (module) {
15     dactyl.teardown();
16 }
17
18 var setupTest = function (test) {
19     dactyl.runViCommand([["VK_ESCAPE"]]);
20 };
21
22 function urlTarget(url) Services.io.newChannel(url, null, null).name;
23
24 function urlExists(url) {
25     try {
26         let chan = Services.io.newChannel(url);
27         chan.open();
28         try { chan.cancel(Cr.NS_BINDING_ABORTED) } catch (e) {}
29         return true;
30     }
31     catch (e) {
32         return false;
33     }
34 }
35
36 const HELP_FILES = ["all", "tutorial", "intro", "starting", "browsing",
37     "buffer", "cmdline", "editing", "options", "pattern", "tabs", "hints",
38     "map", "eval", "marks", "repeat", "autocommands", "print", "gui",
39     "styling", "message", "privacy", "developer", "various", "plugins", "faq",
40     "versions", "index"];
41
42 var testViHelpCommand_OpensIntroHelpPage = function () {
43     assertHelpOpensPageWithTag({
44         HELP_COMMAND: function () { dactyl.runViCommand([["VK_F1"]]); },
45         EXPECTED_HELP_TAG: "intro.xml"
46     });
47 };
48
49 var testViHelpAllCommand_OpensAllHelpPage = function () {
50     assertHelpOpensPageWithTag({
51         HELP_COMMAND: function () { dactyl.runViCommand([["VK_F1", { altKey: true }]]); },
52         EXPECTED_HELP_TAG: "all.xml"
53     });
54 };
55
56 var testExHelpCommand_NoArgs_OpensIntroHelpPage = function () {
57     assertHelpOpensPageWithTag({
58         HELP_COMMAND: function () { dactyl.runExCommand("help"); },
59         EXPECTED_HELP_TAG: "intro.xml"
60     });
61 };
62
63 var testExHelpAllCommand_NoArgs_OpensAllHelpPage = function () {
64     assertHelpOpensPageWithTag({
65         HELP_COMMAND: function () { dactyl.runExCommand("helpall"); },
66         EXPECTED_HELP_TAG: "all.xml"
67     });
68 };
69
70 var testExHelpCommand_PageTagArg_OpensHelpPageContainingTag = function () {
71     for (let [, file] in Iterator(HELP_FILES)) {
72         let tag = file + ".xml";
73         assertHelpOpensPageWithTag({
74             HELP_COMMAND: function () { dactyl.runExCommand("help " + tag); },
75             EXPECTED_HELP_TAG: tag
76         });
77
78         let links = controller.tabs.activeTab.querySelectorAll("a[href^='dactyl:']");
79
80         let missing = Array.filter(links, function (link) urlExists(link.href))
81                            .map(function (link) link.textContent + " -> " + link.href);
82
83         utils.assertEqual("testHelpCommands.assertNoDeadLinks", 0, missing.length,
84                           "Found dead links in " + tag + ": " + missing.join(", "));
85     }
86 };
87
88 function assertHelpOpensPageWithTag({ HELP_COMMAND, EXPECTED_HELP_TAG }) {
89     HELP_COMMAND();
90     controller.waitForPageLoad(controller.tabs.activeTab);
91     controller.assertNode(new elementslib.ID(controller.tabs.activeTab, EXPECTED_HELP_TAG));
92 }
93
94 // vim: sw=4 ts=8 et: