summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/account/browser_accountOrder.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/account/browser_accountOrder.js')
-rw-r--r--comm/mail/test/browser/account/browser_accountOrder.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/comm/mail/test/browser/account/browser_accountOrder.js b/comm/mail/test/browser/account/browser_accountOrder.js
new file mode 100644
index 0000000000..44ec226388
--- /dev/null
+++ b/comm/mail/test/browser/account/browser_accountOrder.js
@@ -0,0 +1,91 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * This test checks proper operation of the account ordering functionality in the Account manager.
+ */
+
+"use strict";
+
+var { click_account_tree_row, get_account_tree_row, open_advanced_settings } =
+ ChromeUtils.import(
+ "resource://testing-common/mozmill/AccountManagerHelpers.jsm"
+ );
+
+var { MailServices } = ChromeUtils.import(
+ "resource:///modules/MailServices.jsm"
+);
+
+var { mc } = ChromeUtils.import(
+ "resource://testing-common/mozmill/FolderDisplayHelpers.jsm"
+);
+
+var gPopAccount, gOriginalAccountCount;
+
+add_setup(function () {
+ // There may be pre-existing accounts from other tests.
+ gOriginalAccountCount = MailServices.accounts.allServers.length;
+
+ // Create a POP server
+ let popServer = MailServices.accounts
+ .createIncomingServer("nobody", "foo.invalid", "pop3")
+ .QueryInterface(Ci.nsIPop3IncomingServer);
+
+ let identity = MailServices.accounts.createIdentity();
+ identity.email = "tinderbox@foo.invalid";
+
+ gPopAccount = MailServices.accounts.createAccount();
+ gPopAccount.incomingServer = popServer;
+ gPopAccount.addIdentity(identity);
+
+ // Now there should be one more account.
+ Assert.equal(
+ MailServices.accounts.allServers.length,
+ gOriginalAccountCount + 1
+ );
+});
+
+registerCleanupFunction(function () {
+ if (gPopAccount) {
+ // Remove our test account to leave the profile clean.
+ MailServices.accounts.removeAccount(gPopAccount);
+ gPopAccount = null;
+ }
+ // There should be only the original accounts left.
+ Assert.equal(MailServices.accounts.allServers.length, gOriginalAccountCount);
+});
+
+add_task(async function test_account_open_state() {
+ await open_advanced_settings(async function (tab) {
+ await subtest_check_account_order(tab);
+ });
+});
+
+/**
+ * Check the order of the accounts.
+ *
+ * @param {object} tab - The account manager tab.
+ */
+async function subtest_check_account_order(tab) {
+ let accountRow = get_account_tree_row(gPopAccount.key, null, tab);
+ click_account_tree_row(tab, accountRow);
+
+ let prevAccountList = MailServices.accounts.accounts.map(
+ account => account.key
+ );
+
+ // Moving the account up to reorder.
+ EventUtils.synthesizeKey("VK_UP", { altKey: true });
+ await new Promise(resolve => setTimeout(resolve));
+ let curAccountList = MailServices.accounts.accounts.map(
+ account => account.key
+ );
+ Assert.notEqual(curAccountList.join(), prevAccountList.join());
+
+ // Moving the account down, back to the starting position.
+ EventUtils.synthesizeKey("VK_DOWN", { altKey: true });
+ await new Promise(resolve => setTimeout(resolve));
+ curAccountList = MailServices.accounts.accounts.map(account => account.key);
+ Assert.equal(curAccountList.join(), prevAccountList.join());
+}