summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/base/test/unit/test_nsIMsgFolder.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/base/test/unit/test_nsIMsgFolder.js')
-rw-r--r--comm/mailnews/base/test/unit/test_nsIMsgFolder.js102
1 files changed, 102 insertions, 0 deletions
diff --git a/comm/mailnews/base/test/unit/test_nsIMsgFolder.js b/comm/mailnews/base/test/unit/test_nsIMsgFolder.js
new file mode 100644
index 0000000000..9cfb57a07c
--- /dev/null
+++ b/comm/mailnews/base/test/unit/test_nsIMsgFolder.js
@@ -0,0 +1,102 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * Test suite for nsIMsgFolder functions.
+ */
+
+var { MailServices } = ChromeUtils.import(
+ "resource:///modules/MailServices.jsm"
+);
+
+function run_test() {
+ // Create a local mail account (we need this first)
+ MailServices.accounts.createLocalMailAccount();
+
+ // Get the account
+ let account = MailServices.accounts.accounts[0];
+
+ // Get the root folder
+ var root = account.incomingServer.rootFolder;
+
+ // Add a sub folder to ensure that we have some folders created
+ root.createSubfolder("folder1", null);
+
+ // Test - getChildNamed
+
+ var caught = false;
+ try {
+ root.getChildNamed("folder");
+ } catch (e) {
+ caught = true;
+ }
+ Assert.equal(caught, true);
+
+ caught = false;
+ try {
+ root.getChildNamed("Trash1");
+ } catch (e) {
+ caught = true;
+ }
+ Assert.equal(caught, true);
+
+ var folder1 = root.getChildNamed("folder1");
+
+ Assert.notEqual(folder1, folder2);
+ Assert.equal(folder1.prettyName, "folder1");
+
+ var folder2 = root.getChildNamed("FOLDER1");
+
+ Assert.equal(folder1, folder2);
+
+ // Check special folders aren't deletable, and that normal folders are.
+ if (!root.containsChildNamed("Inbox")) {
+ root.createSubfolder("Inbox", null);
+ }
+ var inbox = root.getChildNamed("Inbox");
+ inbox.setFlag(Ci.nsMsgFolderFlags.Inbox);
+ Assert.ok(!inbox.deletable);
+
+ if (!root.containsChildNamed("Drafts")) {
+ root.createSubfolder("Drafts", null);
+ }
+ var drafts = root.getChildNamed("Drafts");
+ drafts.setFlag(Ci.nsMsgFolderFlags.Drafts);
+ Assert.ok(!drafts.deletable);
+
+ if (!root.containsChildNamed("Templates")) {
+ root.createSubfolder("Templates", null);
+ }
+ var templates = root.getChildNamed("Templates");
+ templates.setFlag(Ci.nsMsgFolderFlags.Templates);
+ Assert.ok(!templates.deletable);
+
+ if (!root.containsChildNamed("Sent")) {
+ root.createSubfolder("Sent", null);
+ }
+ var sent = root.getChildNamed("Sent");
+ sent.setFlag(Ci.nsMsgFolderFlags.SentMail);
+ Assert.ok(!sent.deletable);
+
+ if (!root.containsChildNamed("Archives")) {
+ root.createSubfolder("Archives", null);
+ }
+ var archives = root.getChildNamed("Archives");
+ archives.setFlag(Ci.nsMsgFolderFlags.Archive);
+ Assert.ok(!archives.deletable);
+
+ if (!root.containsChildNamed("Trash")) {
+ root.createSubfolder("Trash", null);
+ }
+ var trash = root.getChildNamed("Trash");
+ trash.setFlag(Ci.nsMsgFolderFlags.Trash);
+ Assert.ok(!trash.deletable);
+
+ if (!root.containsChildNamed("Outbox")) {
+ root.createSubfolder("Outbox", null);
+ }
+ var outbox = root.getChildNamed("Outbox");
+ outbox.setFlag(Ci.nsMsgFolderFlags.Queue);
+ Assert.ok(!outbox.deletable);
+
+ // test a normal folder is deletable
+ Assert.ok(folder1.deletable);
+}