summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/imap/test/unit/test_folderOfflineFlags.js
blob: b1c26069c6ba5236edf1af1d2e26e8336db344f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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();
});