diff options
Diffstat (limited to 'comm/mailnews/imap/test/unit/test_folderOfflineFlags.js')
-rw-r--r-- | comm/mailnews/imap/test/unit/test_folderOfflineFlags.js | 108 |
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(); +}); |