diff options
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.js | 91 |
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"]; +}); |