diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /comm/mail/test/browser/folder-pane/browser_folderPaneModeContextMenu.js | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'comm/mail/test/browser/folder-pane/browser_folderPaneModeContextMenu.js')
-rw-r--r-- | comm/mail/test/browser/folder-pane/browser_folderPaneModeContextMenu.js | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/comm/mail/test/browser/folder-pane/browser_folderPaneModeContextMenu.js b/comm/mail/test/browser/folder-pane/browser_folderPaneModeContextMenu.js new file mode 100644 index 0000000000..1e571efa40 --- /dev/null +++ b/comm/mail/test/browser/folder-pane/browser_folderPaneModeContextMenu.js @@ -0,0 +1,208 @@ +/* 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/. */ + +let tabmail, + about3Pane, + folderPane, + folderPaneModeContextMenu, + folderPaneModeNames, + folderPaneModeMoveUpMenuItem, + folderPaneModeMoveDownMenuItem; + +add_setup(async function () { + tabmail = document.getElementById("tabmail"); + about3Pane = tabmail.currentAbout3Pane; + folderPane = about3Pane.folderPane; + folderPaneModeContextMenu = about3Pane.document.getElementById( + "folderPaneModeContext" + ); + folderPaneModeNames = about3Pane.document.getElementsByClassName("mode-name"); + folderPaneModeMoveUpMenuItem = about3Pane.document.getElementById( + "folderPaneModeMoveUp" + ); + folderPaneModeMoveDownMenuItem = about3Pane.document.getElementById( + "folderPaneModeMoveDown" + ); + + folderPane.activeModes = ["all", "smart", "unread", "favorite", "recent"]; + + registerCleanupFunction(() => { + Services.xulStore.removeDocument( + "chrome://messenger/content/messenger.xhtml" + ); + }); +}); + +/** + * Tests that ability to swap a folder mode for the one above it, and + * ensures that if it's the last element, the option to swap is disabled. + */ +add_task(async function testMoveFolderModeUp() { + // Find the "Recent" folder pane mode text element as that is the + // last folder pane mode. + const recentFolderModeName = Array.prototype.find.call( + folderPaneModeNames, + element => element.parentElement.parentElement.dataset.mode === "recent" + ); + + // Grab the options element which is next to the text element to open + // the context menu. + const recentFolderModeOptions = recentFolderModeName.nextElementSibling; + + // Make sure the context menu is visible before continuing/ + const shownPromise = BrowserTestUtils.waitForEvent( + folderPaneModeContextMenu, + "popupshown" + ); + + EventUtils.synthesizeMouseAtCenter(recentFolderModeOptions, {}, about3Pane); + + await shownPromise; + + // Assert initial folder mode positions + Assert.equal( + folderPane.activeModes.at(-1), + "recent", + "Recent Folders mode is in the incorrect position." + ); + Assert.equal( + folderPane.activeModes.at(-2), + "favorite", + "Favourite mode is in the incorrect position." + ); + + // Ensure that the move down element is disabled asit is the last element. + + Assert.equal( + folderPaneModeMoveDownMenuItem.getAttribute("disabled"), + "true", + "Move down element is enabled." + ); + + const hiddenPromise = BrowserTestUtils.waitForEvent( + folderPaneModeContextMenu, + "popuphidden" + ); + + folderPaneModeContextMenu.activateItem(folderPaneModeMoveUpMenuItem); + + await hiddenPromise; + + // Folder mode that was moved up should be swapped with the folder mode + // above it in the activeModes array. + Assert.equal( + folderPane.activeModes.at(-1), + "favorite", + "Folder pane mode was not moved up." + ); + Assert.equal( + folderPane.activeModes.at(-2), + "recent", + "Folder pane mode was not moved down." + ); +}); + +/** + * Tests that ability to swap a folder mode for the one below it. + */ +add_task(async function testMoveFolderModeDown() { + // Find the "Recent" folder pane mode text element as that is the + // second last folder pane mode. + const recentFolderModeName = Array.prototype.find.call( + folderPaneModeNames, + element => element.parentElement.parentElement.dataset.mode === "recent" + ); + + // Grab the options element which is next to the text element to open + // the context menu. + const recentFolderModeOptions = recentFolderModeName.nextElementSibling; + + // Make sure the context menu is visible before continuing/ + const shownPromise = BrowserTestUtils.waitForEvent( + folderPaneModeContextMenu, + "popupshown" + ); + + EventUtils.synthesizeMouseAtCenter(recentFolderModeOptions, {}, about3Pane); + + await shownPromise; + + // Assert initial folder mode positions + Assert.equal( + folderPane.activeModes.at(-1), + "favorite", + "Favourite folder mode is in the incorrect position." + ); + Assert.equal( + folderPane.activeModes.at(-2), + "recent", + "Recent Folders mode is in the incorrect position." + ); + + const hiddenPromise = BrowserTestUtils.waitForEvent( + folderPaneModeContextMenu, + "popuphidden" + ); + + folderPaneModeContextMenu.activateItem(folderPaneModeMoveDownMenuItem); + + await hiddenPromise; + + // Folder mode that was moved down should be swapped with the folder mode + // below it in the activeModes array. + Assert.equal( + folderPane.activeModes.at(-1), + "recent", + "Folder pane mode was not moved up." + ); + Assert.equal( + folderPane.activeModes.at(-2), + "favorite", + "Folder pane mode was not moved down." + ); +}); + +/** + * Tests that the Move Up menu item on a folder pane mode is disabled when + * it is the topmost folder pane mode + */ + +add_task(async function testCantMoveFolderPaneModeUp() { + // Find the "All" folder pane mode text element as that is the + // first folder pane mode. + const allFolderModeName = Array.prototype.find.call( + folderPaneModeNames, + element => element.parentElement.parentElement.dataset.mode === "all" + ); + + // Grab the options element which is next to the text element to open + // the context menu. + const allFolderModeOptions = allFolderModeName.nextElementSibling; + + // Make sure the context menu is visible before continuing/ + const shownPromise = BrowserTestUtils.waitForEvent( + folderPaneModeContextMenu, + "popupshown" + ); + + EventUtils.synthesizeMouseAtCenter(allFolderModeOptions, {}, about3Pane); + + await shownPromise; + + Assert.equal( + folderPaneModeMoveUpMenuItem.getAttribute("disabled"), + "true", + "Move down element is enabled." + ); + + // Make sure the context menu is hidden before continuing + const hiddenPromise = BrowserTestUtils.waitForEvent( + folderPaneModeContextMenu, + "popuphidden" + ); + + folderPaneModeContextMenu.hidePopup(); + + await hiddenPromise; +}); |