summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/folder-tree-modes/browser_unreadFolders.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/folder-tree-modes/browser_unreadFolders.js')
-rw-r--r--comm/mail/test/browser/folder-tree-modes/browser_unreadFolders.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/comm/mail/test/browser/folder-tree-modes/browser_unreadFolders.js b/comm/mail/test/browser/folder-tree-modes/browser_unreadFolders.js
new file mode 100644
index 0000000000..ffc6dc96ac
--- /dev/null
+++ b/comm/mail/test/browser/folder-tree-modes/browser_unreadFolders.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/. */
+
+/*
+ * Test that the unread folder mode works properly. This includes making
+ * sure that the selected folder is maintained correctly when the view
+ * is rebuilt because a folder has become newly unread.
+ */
+
+"use strict";
+
+var {
+ assert_folder_visible,
+ be_in_folder,
+ delete_messages,
+ get_about_3pane,
+ inboxFolder,
+ make_message_sets_in_folders,
+ mc,
+} = ChromeUtils.import(
+ "resource://testing-common/mozmill/FolderDisplayHelpers.jsm"
+);
+
+var about3Pane;
+var rootFolder;
+var inboxSubfolder;
+var trashFolder;
+var trashSubfolder;
+var inboxSet;
+
+add_setup(async function () {
+ about3Pane = get_about_3pane();
+ rootFolder = inboxFolder.server.rootFolder;
+
+ // Create a folder as a subfolder of the inbox
+ inboxFolder.createSubfolder("UnreadFoldersA", null);
+ inboxSubfolder = inboxFolder.getChildNamed("UnreadFoldersA");
+
+ trashFolder = inboxFolder.server.rootFolder.getFolderWithFlags(
+ Ci.nsMsgFolderFlags.Trash
+ );
+ trashFolder.createSubfolder("UnreadFoldersB", null);
+ trashSubfolder = trashFolder.getChildNamed("UnreadFoldersB");
+
+ // The message itself doesn't really matter, as long as there's at least one
+ // in the folder.
+ [inboxSet] = await make_message_sets_in_folders(
+ [inboxFolder],
+ [{ count: 1 }]
+ );
+ await make_message_sets_in_folders([inboxSubfolder], [{ count: 1 }]);
+
+ // Switch to the unread folder mode.
+ await be_in_folder(inboxFolder);
+ about3Pane.folderPane.activeModes = ["unread"];
+});
+
+/**
+ * Test that inbox and inboxSubfolder are in view
+ */
+add_task(async function test_folder_population() {
+ about3Pane.folderTree.expandRowAtIndex(0);
+ await new Promise(resolve => setTimeout(resolve));
+ assert_folder_visible(inboxFolder);
+
+ about3Pane.folderTree.expandRowAtIndex(1);
+ await new Promise(resolve => setTimeout(resolve));
+ assert_folder_visible(inboxSubfolder);
+});
+
+/**
+ * Test that a folder newly getting unread messages doesn't
+ * change the selected folder in unread folders mode.
+ */
+add_task(async function test_newly_added_folder() {
+ let [newSet] = await make_message_sets_in_folders(
+ [trashFolder],
+ [{ count: 1 }]
+ );
+ assert_folder_visible(trashFolder);
+ Assert.equal(about3Pane.folderTree.selectedIndex, 0);
+ await delete_messages(newSet);
+});
+
+registerCleanupFunction(async function () {
+ inboxFolder.propagateDelete(inboxSubfolder, true);
+ await delete_messages(inboxSet);
+ trashFolder.propagateDelete(trashSubfolder, true);
+ about3Pane.folderPane.activeModes = ["all"];
+});