diff options
Diffstat (limited to 'comm/mail/test/browser/folder-display/browser_displayName.js')
-rw-r--r-- | comm/mail/test/browser/folder-display/browser_displayName.js | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/comm/mail/test/browser/folder-display/browser_displayName.js b/comm/mail/test/browser/folder-display/browser_displayName.js new file mode 100644 index 0000000000..5e8cf323b7 --- /dev/null +++ b/comm/mail/test/browser/folder-display/browser_displayName.js @@ -0,0 +1,244 @@ +/* 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 display names in email addresses are correctly shown in the + * thread pane. + */ + +"use strict"; + +var { ensure_card_exists } = ChromeUtils.import( + "resource://testing-common/mozmill/AddressBookHelpers.jsm" +); +var { + add_message_to_folder, + be_in_folder, + create_folder, + create_message, + get_about_3pane, + mc, + select_click_row, +} = ChromeUtils.import( + "resource://testing-common/mozmill/FolderDisplayHelpers.jsm" +); + +var folder; + +var messages = [ + // Basic From header tests + { + name: "from_display_name_unquoted", + headers: { From: "Carter Burke <cburke@wyutani.invalid>" }, + expected: { column: "from", value: "Carter Burke" }, + }, + { + name: "from_display_name_quoted", + headers: { From: '"Ellen Ripley" <eripley@wyutani.invalid>' }, + expected: { column: "from", value: "Ellen Ripley" }, + }, + { + name: "from_display_name_with_comma", + headers: { From: '"William Gorman, Lt." <wgorman@uscmc.invalid>' }, + expected: { column: "from", value: "William Gorman, Lt." }, + }, + { + name: "from_email_raw", + headers: { From: "dhicks@uscmc.invalid" }, + expected: { column: "from", value: "dhicks@uscmc.invalid" }, + }, + { + name: "from_email_in_angle_brackets", + headers: { From: "<whudson@uscmc.invalid>" }, + expected: { column: "from", value: "whudson@uscmc.invalid" }, + }, + + // Basic To header tests + { + name: "to_display_name_unquoted", + headers: { To: "Carter Burke <cburke@wyutani.invalid>" }, + expected: { column: "recipients", value: "Carter Burke" }, + }, + { + name: "to_display_name_quoted", + headers: { To: '"Ellen Ripley" <eripley@wyutani.invalid>' }, + expected: { column: "recipients", value: "Ellen Ripley" }, + }, + { + name: "to_display_name_with_comma", + headers: { To: '"William Gorman, Lt." <wgorman@uscmc.invalid>' }, + expected: { column: "recipients", value: "William Gorman, Lt." }, + }, + { + name: "to_email_raw", + headers: { To: "dhicks@uscmc.invalid" }, + expected: { column: "recipients", value: "dhicks@uscmc.invalid" }, + }, + { + name: "to_email_in_angle_brackets", + headers: { To: "<whudson@uscmc.invalid>" }, + expected: { column: "recipients", value: "whudson@uscmc.invalid" }, + }, + { + name: "to_display_name_multiple", + headers: { + To: + "Carter Burke <cburke@wyutani.invalid>, " + + "Dwayne Hicks <dhicks@uscmc.invalid>", + }, + expected: { column: "recipients", value: "Carter Burke, Dwayne Hicks" }, + }, + + // Address book tests + { + name: "from_in_abook_pdn", + headers: { From: "Al Apone <aapone@uscmc.invalid>" }, + expected: { column: "from", value: "Sarge" }, + }, + { + name: "from_in_abook_no_pdn", + headers: { From: "Rebeccah Jorden <rjorden@hadleys-hope.invalid>" }, + expected: { column: "from", value: "Rebeccah Jorden" }, + }, + { + name: "to_in_abook_pdn", + headers: { To: "Al Apone <aapone@uscmc.invalid>" }, + expected: { column: "recipients", value: "Sarge" }, + }, + { + name: "to_in_abook_no_pdn", + headers: { To: "Rebeccah Jorden <rjorden@hadleys-hope.invalid>" }, + expected: { column: "recipients", value: "Rebeccah Jorden" }, + }, + { + name: "to_in_abook_multiple_mixed_pdn", + headers: { + To: + "Al Apone <aapone@uscmc.invalid>, " + + "Rebeccah Jorden <rjorden@hadleys-hope.invalid>", + }, + expected: { column: "recipients", value: "Sarge, Rebeccah Jorden" }, + }, + + // Esoteric tests; these mainly test that we're getting the expected info back + // from the message header. + { + name: "from_display_name_multiple", + headers: { + From: + "Carter Burke <cburke@wyutani.invalid>, " + + "Dwayne Hicks <dhicks@uscmc.invalid>", + }, + expected: { column: "from", value: "Carter Burke et al." }, + }, + { + name: "from_missing", + headers: { From: null }, + expected: { column: "from", value: "" }, + }, + { + name: "from_empty", + headers: { From: "" }, + expected: { column: "from", value: "" }, + }, + { + name: "from_invalid", + headers: { From: "invalid" }, + expected: { column: "from", value: "invalid" }, + }, + { + name: "from_and_sender_display_name", + headers: { + From: "Carter Burke <cburke@wyutani.invalid>", + Sender: "The Company <thecompany@wyutani.invalid>", + }, + expected: { column: "from", value: "Carter Burke" }, + }, + { + name: "sender_and_no_from_display_name", + headers: { From: null, Sender: "The Company <thecompany@wyutani.invalid>" }, + expected: { column: "from", value: "The Company" }, + }, + { + name: "to_missing", + headers: { To: null }, + expected: { column: "recipients", value: "" }, + }, + { + name: "to_empty", + headers: { To: "" }, + expected: { column: "recipients", value: "" }, + }, + { + name: "to_invalid", + headers: { To: "invalid" }, + expected: { column: "recipients", value: "invalid" }, + }, + { + name: "to_and_cc_display_name", + headers: { + To: "Carter Burke <cburke@wyutani.invalid>", + Cc: "The Company <thecompany@wyutani.invalid>", + }, + expected: { column: "recipients", value: "Carter Burke" }, + }, + { + name: "cc_and_no_to_display_name", + headers: { To: null, Cc: "The Company <thecompany@wyutani.invalid>" }, + expected: { column: "recipients", value: "The Company" }, + }, +]; + +var contacts = [ + { email: "aapone@uscmc.invalid", name: "Sarge", pdn: true }, + { email: "rjorden@hadleys-hope.invalid", name: "Newt", pdn: false }, +]; + +add_setup(async function () { + folder = await create_folder("DisplayNameA"); + + for (let message of messages) { + await add_message_to_folder( + [folder], + create_message({ + clobberHeaders: message.headers, + }) + ); + } + + for (let contact of contacts) { + ensure_card_exists(contact.email, contact.name, contact.pdn); + } + + await be_in_folder(folder); +}); + +async function check_display_name(index, columnName, expectedName) { + let columnId; + switch (columnName) { + case "from": + columnId = "senderCol"; + break; + case "recipients": + columnId = "recipientCol"; + break; + default: + throw new Error("unknown column name: " + columnName); + } + + let cellText = get_about_3pane().gDBView.cellTextForColumn(index, columnId); + Assert.equal(cellText, expectedName, columnName); +} + +// Generate a test for each message in |messages|. +for (let [i, message] of messages.entries()) { + this["test_" + message.name] = async function (i, message) { + await check_display_name( + i, + message.expected.column, + message.expected.value + ); + }.bind(this, i, message); + add_task(this[`test_${message.name}`]); +} |