diff options
Diffstat (limited to 'comm/mail/test/browser/folder-display/browser_archiveMessages.js')
-rw-r--r-- | comm/mail/test/browser/folder-display/browser_archiveMessages.js | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/comm/mail/test/browser/folder-display/browser_archiveMessages.js b/comm/mail/test/browser/folder-display/browser_archiveMessages.js new file mode 100644 index 0000000000..7f3aabccc7 --- /dev/null +++ b/comm/mail/test/browser/folder-display/browser_archiveMessages.js @@ -0,0 +1,132 @@ +/* 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/. */ + +"use strict"; + +var { + add_message_sets_to_folders, + archive_messages, + assert_message_not_in_view, + assert_nothing_selected, + assert_selected, + assert_selected_and_displayed, + be_in_folder, + create_folder, + create_thread, + expand_all_threads, + get_about_3pane, + make_display_threaded, + mc, + select_click_row, + select_none, + select_shift_click_row, + toggle_thread_row, +} = ChromeUtils.import( + "resource://testing-common/mozmill/FolderDisplayHelpers.jsm" +); + +var folder; + +/** + * The number of messages in the thread we use to test. + */ +var NUM_MESSAGES_IN_THREAD = 6; + +add_setup(async function () { + folder = await create_folder("ThreadedMessages"); + let thread = create_thread(NUM_MESSAGES_IN_THREAD); + await add_message_sets_to_folders([folder], [thread]); + thread = create_thread(NUM_MESSAGES_IN_THREAD); + await add_message_sets_to_folders([folder], [thread]); +}); + +/** + * Test archiving messages that are not currently selected. + */ +add_task(async function test_batch_archiver() { + await be_in_folder(folder); + + select_none(); + assert_nothing_selected(); + + expand_all_threads(); + + /* Select the first (expanded) thread */ + let root = select_click_row(0); + assert_selected_and_displayed(root); + + /* Get a grip on the first and the second sub-message */ + let m1 = select_click_row(1); + let m2 = select_click_row(2); + select_click_row(0); + assert_selected_and_displayed(root); + + /* The root message is selected, we archive the first sub-message */ + archive_messages([m1]); + + /* This message is gone and the root message is still selected **/ + assert_message_not_in_view([m1]); + assert_selected_and_displayed(root); + + /* Now, archiving messages under a collapsed thread */ + toggle_thread_row(0); + archive_messages([m2]); + + /* Selection didn't change */ + assert_selected(root); + + /* And the message is gone */ + toggle_thread_row(0); + assert_message_not_in_view([m2]); + + /* Both threads are collapsed */ + toggle_thread_row(0); + + /* Get a grip on the second thread */ + let root2 = select_click_row(1); + select_click_row(0); + assert_selected(root); + + /* Archive the first thread, now the second thread should be selected */ + Assert.ok( + Services.prefs.getBoolPref("mail.operate_on_msgs_in_collapsed_threads") + ); + Assert.greater(get_about_3pane().gDBView.getSelectedMsgHdrs().length, 1); + archive_messages(get_about_3pane().gDBView.getSelectedMsgHdrs()); + select_click_row(0); // TODO This should be unnecessary. + assert_selected(root2); + + /* We only have the first thread left */ + toggle_thread_row(0); + assert_selected_and_displayed(root2); + expand_all_threads(); + + /* Archive the head of the thread, check that it still works fine */ + let child1 = select_click_row(1); + select_click_row(0); + archive_messages([root2]); + select_click_row(0); // TODO This should be unnecessary. + assert_selected_and_displayed(child1); + + /* Test archiving a partial selection */ + let child2 = select_click_row(1); + let child3 = select_click_row(2); + select_click_row(3); + + select_shift_click_row(2); + select_shift_click_row(1); + select_shift_click_row(0); + + archive_messages([child1, child3]); + assert_message_not_in_view([child1, child3]); + select_click_row(0); // TODO This should be unnecessary. + assert_selected_and_displayed(child2); + + Assert.report( + false, + undefined, + undefined, + "Test ran to completion successfully" + ); +}); |