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/mailnews/addrbook/test/unit/test_abCardProperty.js | |
parent | Initial commit. (diff) | |
download | thunderbird-upstream.tar.xz thunderbird-upstream.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/mailnews/addrbook/test/unit/test_abCardProperty.js')
-rw-r--r-- | comm/mailnews/addrbook/test/unit/test_abCardProperty.js | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/comm/mailnews/addrbook/test/unit/test_abCardProperty.js b/comm/mailnews/addrbook/test/unit/test_abCardProperty.js new file mode 100644 index 0000000000..5feae230dc --- /dev/null +++ b/comm/mailnews/addrbook/test/unit/test_abCardProperty.js @@ -0,0 +1,178 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * Test suite for basic nsIAbCard functions. + */ + +// Intersperse these with UTF-8 values to check we handle them correctly. +var kFNValue = "testFirst\u00D0"; +var kLNValue = "testLast"; +var kDNValue = "testDisplay\u00D1"; +var kEmailValue = "testEmail\u00D2@foo.invalid"; +var kEmailValueLC = "testemail\u00D2@foo.invalid"; +var kEmailValue2 = "test@test.foo.invalid"; +// Email without the @ or anything after it. +var kEmailReducedValue = "testEmail\u00D2"; +var kCompanyValue = "Test\u00D0 Company"; + +add_task(function testAbCardProperty() { + let card = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance( + Ci.nsIAbCard + ); + + // Test - Set First, Last and Display Names and Email Address + // via setProperty, and check correctly saved via their + // attributes. We're using firstName to check UTF-8 values. + card.setProperty("FirstName", kFNValue); + card.setProperty("LastName", kLNValue); + card.setProperty("DisplayName", kDNValue); + card.setProperty("PrimaryEmail", kEmailValue); + + Assert.equal(card.firstName, kFNValue); + Assert.equal(card.lastName, kLNValue); + Assert.equal(card.displayName, kDNValue); + Assert.equal(card.primaryEmail, kEmailValue); + + // Repeat in the opposite order. + card.firstName = kFNValue; + card.lastName = kLNValue; + card.displayName = kDNValue; + card.primaryEmail = kEmailValue; + + Assert.equal(card.getProperty("FirstName", "BAD"), kFNValue); + Assert.equal(card.getProperty("LastName", "BAD"), kLNValue); + Assert.equal(card.getProperty("DisplayName", "BAD"), kDNValue); + Assert.equal(card.getProperty("PrimaryEmail", "BAD"), kEmailValue); + + // Test - generateName. Note: if the addressBook.properties + // value changes, this will affect these tests. + + const { + GENERATE_DISPLAY_NAME, + GENERATE_LAST_FIRST_ORDER, + GENERATE_FIRST_LAST_ORDER, + } = Ci.nsIAbCard; + + // Add a company name, so we can test fallback to company name. + card.setProperty("Company", kCompanyValue); + + Assert.equal(card.generateName(GENERATE_DISPLAY_NAME), kDNValue); + Assert.equal( + card.generateName(GENERATE_LAST_FIRST_ORDER), + kLNValue + ", " + kFNValue + ); + Assert.equal( + card.generateName(GENERATE_FIRST_LAST_ORDER), + kFNValue + " " + kLNValue + ); + + // Test - generateName, with missing items. + + card.displayName = ""; + Assert.equal(card.generateName(GENERATE_DISPLAY_NAME), kCompanyValue); + + card.deleteProperty("Company"); + Assert.equal(card.generateName(GENERATE_DISPLAY_NAME), kEmailReducedValue); + + // Reset company name for the first/last name tests. + card.setProperty("Company", kCompanyValue); + + card.firstName = ""; + Assert.equal(card.generateName(GENERATE_LAST_FIRST_ORDER), kLNValue); + Assert.equal(card.generateName(GENERATE_FIRST_LAST_ORDER), kLNValue); + + card.firstName = kFNValue; + card.lastName = ""; + Assert.equal(card.generateName(GENERATE_LAST_FIRST_ORDER), kFNValue); + Assert.equal(card.generateName(GENERATE_FIRST_LAST_ORDER), kFNValue); + + card.firstName = ""; + Assert.equal(card.generateName(GENERATE_LAST_FIRST_ORDER), kCompanyValue); + Assert.equal(card.generateName(GENERATE_FIRST_LAST_ORDER), kCompanyValue); + + card.deleteProperty("Company"); + Assert.equal( + card.generateName(GENERATE_LAST_FIRST_ORDER), + kEmailReducedValue + ); + Assert.equal( + card.generateName(GENERATE_FIRST_LAST_ORDER), + kEmailReducedValue + ); + + card.primaryEmail = ""; + Assert.equal(card.generateName(GENERATE_LAST_FIRST_ORDER), ""); + Assert.equal(card.generateName(GENERATE_FIRST_LAST_ORDER), ""); + + // Test - generateNameWithBundle, most of this will have + // been tested above. + + card.firstName = kFNValue; + card.lastName = kLNValue; + + let bundle = Services.strings.createBundle( + "chrome://messenger/locale/addressbook/addressBook.properties" + ); + + Assert.equal(card.generateName(1, bundle), kLNValue + ", " + kFNValue); + + // Test - generatePhoneticName + + card.setProperty("PhoneticFirstName", kFNValue); + card.setProperty("PhoneticLastName", kLNValue); + Assert.equal(card.generatePhoneticName(false), kFNValue + kLNValue); + Assert.equal(card.generatePhoneticName(true), kLNValue + kFNValue); + + card.setProperty("PhoneticLastName", ""); + Assert.equal(card.generatePhoneticName(false), kFNValue); + Assert.equal(card.generatePhoneticName(true), kFNValue); + + card.setProperty("PhoneticFirstName", ""); + card.setProperty("PhoneticLastName", kLNValue); + Assert.equal(card.generatePhoneticName(false), kLNValue); + Assert.equal(card.generatePhoneticName(true), kLNValue); + + // Test - emailAddresses + + card.deleteProperty("PrimaryEmail"); + card.deleteProperty("SecondEmail"); + Assert.deepEqual(card.emailAddresses, []); + + card.primaryEmail = kEmailValue; + Assert.deepEqual(card.emailAddresses, [kEmailValue]); + + card.setProperty("SecondEmail", kEmailValue2); + Assert.deepEqual(card.emailAddresses, [kEmailValue, kEmailValue2]); + + card.primaryEmail = ""; + Assert.deepEqual(card.emailAddresses, [kEmailValue2]); + + card.deleteProperty("SecondEmail"); + Assert.deepEqual(card.emailAddresses, []); + + // Test - hasEmailAddress + + card.deleteProperty("PrimaryEmail"); + card.deleteProperty("SecondEmail"); + + Assert.equal(card.hasEmailAddress(kEmailValue), false); + Assert.equal(card.hasEmailAddress(kEmailValueLC), false); + Assert.equal(card.hasEmailAddress(kEmailValue2), false); + + card.setProperty("PrimaryEmail", kEmailValue); + + Assert.equal(card.hasEmailAddress(kEmailValue), true); + Assert.equal(card.hasEmailAddress(kEmailValueLC), true); + Assert.equal(card.hasEmailAddress(kEmailValue2), false); + + card.setProperty("SecondEmail", kEmailValue2); + + Assert.equal(card.hasEmailAddress(kEmailValue), true); + Assert.equal(card.hasEmailAddress(kEmailValueLC), true); + Assert.equal(card.hasEmailAddress(kEmailValue2), true); + + card.deleteProperty("PrimaryEmail"); + + Assert.equal(card.hasEmailAddress(kEmailValue), false); + Assert.equal(card.hasEmailAddress(kEmailValueLC), false); + Assert.equal(card.hasEmailAddress(kEmailValue2), true); +}); |