diff options
Diffstat (limited to 'comm/mail/components/extensions/test/browser/browser_ext_quickFilter.js')
-rw-r--r-- | comm/mail/components/extensions/test/browser/browser_ext_quickFilter.js | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/comm/mail/components/extensions/test/browser/browser_ext_quickFilter.js b/comm/mail/components/extensions/test/browser/browser_ext_quickFilter.js new file mode 100644 index 0000000000..302486e31f --- /dev/null +++ b/comm/mail/components/extensions/test/browser/browser_ext_quickFilter.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/. */ + +let messages; +let about3Pane = document.getElementById("tabmail").currentAbout3Pane; + +add_setup(async () => { + let account = createAccount(); + let rootFolder = account.incomingServer.rootFolder; + let subFolders = rootFolder.subFolders; + createMessages(subFolders[0], 10); + + // Modify the messages so the filters can be checked against them. + + messages = [...subFolders[0].messages]; + messages[0].markRead(true); + messages[2].markRead(true); + messages[4].markRead(true); + messages[6].markRead(true); + messages[8].markRead(true); + messages[1].markFlagged(true); + messages[6].markFlagged(true); + messages[0].setStringProperty("keywords", "$label1"); + messages[1].setStringProperty("keywords", "$label2"); + messages[3].setStringProperty("keywords", "$label1 $label2"); + messages[5].setStringProperty("keywords", "$label2"); + messages[6].setStringProperty("keywords", "$label1"); + messages[7].setStringProperty("keywords", "$label2 $label3"); + messages[8].setStringProperty("keywords", "$label3"); + messages[9].setStringProperty("keywords", "$label1 $label2 $label3"); + messages[9].markHasAttachments(true); + + // Add an author to the address book. + + let author = messages[7].author.replace(/["<>]/g, "").split(" "); + let card = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance( + Ci.nsIAbCard + ); + card.setProperty("FirstName", author[0]); + card.setProperty("LastName", author[1]); + card.setProperty("DisplayName", `${author[0]} ${author[1]}`); + card.setProperty("PrimaryEmail", author[2]); + let ab = MailServices.ab.getDirectory("jsaddrbook://abook.sqlite"); + let addedCard = ab.addCard(card); + + about3Pane.displayFolder(subFolders[0]); + + registerCleanupFunction(() => { + ab.deleteCards([addedCard]); + }); +}); + +add_task(async () => { + async function background() { + browser.mailTabs.setQuickFilter({ unread: true }); + await window.sendMessage("checkVisible", 1, 3, 5, 7, 9); + + browser.mailTabs.setQuickFilter({ flagged: true }); + await window.sendMessage("checkVisible", 1, 6); + + browser.mailTabs.setQuickFilter({ flagged: true, unread: true }); + await window.sendMessage("checkVisible", 1); + + browser.mailTabs.setQuickFilter({ tags: true }); + await window.sendMessage("checkVisible", 0, 1, 3, 5, 6, 7, 8, 9); + + browser.mailTabs.setQuickFilter({ + tags: { mode: "any", tags: { $label1: true } }, + }); + await window.sendMessage("checkVisible", 0, 3, 6, 9); + + browser.mailTabs.setQuickFilter({ + tags: { mode: "any", tags: { $label2: true } }, + }); + await window.sendMessage("checkVisible", 1, 3, 5, 7, 9); + + browser.mailTabs.setQuickFilter({ + tags: { mode: "any", tags: { $label1: true, $label2: true } }, + }); + await window.sendMessage("checkVisible", 0, 1, 3, 5, 6, 7, 9); + + browser.mailTabs.setQuickFilter({ + tags: { mode: "all", tags: { $label1: true, $label2: true } }, + }); + await window.sendMessage("checkVisible", 3, 9); + + browser.mailTabs.setQuickFilter({ + tags: { mode: "all", tags: { $label1: true, $label2: false } }, + }); + await window.sendMessage("checkVisible", 0, 6); + + browser.mailTabs.setQuickFilter({ attachment: true }); + await window.sendMessage("checkVisible", 9); + + browser.mailTabs.setQuickFilter({ attachment: false }); + await window.sendMessage("checkVisible", 0, 1, 2, 3, 4, 5, 6, 7, 8); + + browser.mailTabs.setQuickFilter({ contact: true }); + await window.sendMessage("checkVisible", 7); + + browser.mailTabs.setQuickFilter({ contact: false }); + await window.sendMessage("checkVisible", 0, 1, 2, 3, 4, 5, 6, 8, 9); + + browser.test.notifyPass("quickFilter"); + } + + let extension = ExtensionTestUtils.loadExtension({ + files: { + "background.js": background, + "utils.js": await getUtilsJS(), + }, + manifest: { + background: { scripts: ["utils.js", "background.js"] }, + }, + }); + + extension.onMessage("checkVisible", async (...expected) => { + let actual = []; + let dbView = about3Pane.gDBView; + for (let i = 0; i < dbView.numMsgsInView; i++) { + actual.push(messages.indexOf(dbView.getMsgHdrAt(i))); + } + + Assert.deepEqual(actual, expected); + extension.sendMessage(); + }); + + await extension.startup(); + await extension.awaitFinish("quickFilter"); + await extension.unload(); +}); |