summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/imap/test/unit/test_folderOfflineFlags.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/imap/test/unit/test_folderOfflineFlags.js')
-rw-r--r--comm/mailnews/imap/test/unit/test_folderOfflineFlags.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/comm/mailnews/imap/test/unit/test_folderOfflineFlags.js b/comm/mailnews/imap/test/unit/test_folderOfflineFlags.js
new file mode 100644
index 0000000000..b1c26069c6
--- /dev/null
+++ b/comm/mailnews/imap/test/unit/test_folderOfflineFlags.js
@@ -0,0 +1,108 @@
+/* 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/. */
+
+/**
+ * Test that the folders that should get flagged for offline use do, and that
+ * those that shouldn't don't.
+ */
+
+// make SOLO_FILE="test_folderOfflineFlags.js" -C mailnews/imap/test check-one
+
+var { PromiseTestUtils } = ChromeUtils.import(
+ "resource://testing-common/mailnews/PromiseTestUtils.jsm"
+);
+
+/**
+ * Setup the mailboxes that will be used for this test.
+ */
+add_setup(async function () {
+ setupIMAPPump("GMail");
+
+ IMAPPump.mailbox.subscribed = true;
+ IMAPPump.mailbox.specialUseFlag = "\\Inbox";
+ IMAPPump.daemon.createMailbox("[Gmail]", {
+ flags: ["\\Noselect"],
+ subscribed: true,
+ });
+ IMAPPump.daemon.createMailbox("[Gmail]/All Mail", {
+ specialUseFlag: "\\AllMail",
+ subscribed: true,
+ });
+ IMAPPump.daemon.createMailbox("[Gmail]/Drafts", {
+ specialUseFlag: "\\Drafts",
+ subscribed: true,
+ });
+ IMAPPump.daemon.createMailbox("[Gmail]/Sent", {
+ specialUseFlag: "\\Sent",
+ subscribed: true,
+ });
+ IMAPPump.daemon.createMailbox("[Gmail]/Spam", {
+ specialUseFlag: "\\Spam",
+ subscribed: true,
+ });
+ IMAPPump.daemon.createMailbox("[Gmail]/Starred", {
+ specialUseFlag: "\\Starred",
+ subscribed: true,
+ });
+ IMAPPump.daemon.createMailbox("[Gmail]/Trash", {
+ specialUseFlag: "\\Trash",
+ subscribed: true,
+ });
+ IMAPPump.daemon.createMailbox("folder1", { subscribed: true });
+ IMAPPump.daemon.createMailbox("folder2", { subscribed: true });
+
+ // select the inbox to force folder discovery, etc.
+ let listener = new PromiseTestUtils.PromiseUrlListener();
+ IMAPPump.inbox.updateFolderWithListener(null, listener);
+ await listener.promise;
+});
+
+/**
+ * Test that folders generally are marked for offline use by default.
+ */
+add_task(function testGeneralFoldersOffline() {
+ Assert.ok(IMAPPump.inbox.getFlag(Ci.nsMsgFolderFlags.Offline));
+
+ let gmail = IMAPPump.incomingServer.rootFolder.getChildNamed("[Gmail]");
+
+ let allmail = gmail.getFolderWithFlags(Ci.nsMsgFolderFlags.Archive);
+ Assert.ok(allmail.getFlag(Ci.nsMsgFolderFlags.Offline));
+
+ let drafts = gmail.getFolderWithFlags(Ci.nsMsgFolderFlags.Drafts);
+ Assert.ok(drafts.getFlag(Ci.nsMsgFolderFlags.Offline));
+
+ let sent = gmail.getFolderWithFlags(Ci.nsMsgFolderFlags.SentMail);
+ Assert.ok(sent.getFlag(Ci.nsMsgFolderFlags.Offline));
+
+ let rootFolder = IMAPPump.incomingServer.rootFolder;
+
+ let folder1 = rootFolder.getChildNamed("folder1");
+ Assert.ok(folder1.getFlag(Ci.nsMsgFolderFlags.Offline));
+
+ let folder2 = rootFolder.getChildNamed("folder2");
+ Assert.ok(folder2.getFlag(Ci.nsMsgFolderFlags.Offline));
+});
+
+/**
+ * Test that Trash isn't flagged for offline use by default.
+ */
+add_task(function testTrashNotOffline() {
+ let gmail = IMAPPump.incomingServer.rootFolder.getChildNamed("[Gmail]");
+ let trash = gmail.getFolderWithFlags(Ci.nsMsgFolderFlags.Trash);
+ Assert.ok(!trash.getFlag(Ci.nsMsgFolderFlags.Offline));
+});
+
+/**
+ * Test that Junk isn't flagged for offline use by default.
+ */
+add_task(function testJunkNotOffline() {
+ let gmail = IMAPPump.incomingServer.rootFolder.getChildNamed("[Gmail]");
+ let spam = gmail.getFolderWithFlags(Ci.nsMsgFolderFlags.Junk);
+ Assert.ok(!spam.getFlag(Ci.nsMsgFolderFlags.Offline));
+});
+
+/** Cleanup at the end. */
+add_task(function endTest() {
+ teardownIMAPPump();
+});