diff options
Diffstat (limited to '')
-rw-r--r-- | comm/mailnews/addrbook/test/unit/test_cardForEmail.js | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/comm/mailnews/addrbook/test/unit/test_cardForEmail.js b/comm/mailnews/addrbook/test/unit/test_cardForEmail.js new file mode 100644 index 0000000000..3e7a53f339 --- /dev/null +++ b/comm/mailnews/addrbook/test/unit/test_cardForEmail.js @@ -0,0 +1,111 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * Tests nsIAbDirectory::cardForEmailAddress + * - checks correct return when no email address supplied + * - checks correct return when no matching email address supplied + * - checks correct return when matching email address supplied. + * + * Uses: cardForEmail.mab + */ + +function check_correct_card(card) { + Assert.ok(!!card); + + Assert.equal(card.firstName, "FirstName1"); + Assert.equal(card.lastName, "LastName1"); + Assert.equal(card.displayName, "DisplayName1"); + Assert.deepEqual(card.emailAddresses, [ + "PrimaryEmail1@test.invalid", + "SecondEmail1\u00D0@test.invalid", + ]); +} + +function run_test() { + loadABFile("data/cardForEmail", kPABData.fileName); + + // Test - Get the directory + let AB = MailServices.ab.getDirectory(kPABData.URI); + + // Test - Check that a null string succeeds and does not + // return a card (bug 404264) + Assert.ok(AB.cardForEmailAddress(null) == null); + + // Test - Check that an empty string succeeds and does not + // return a card (bug 404264) + Assert.ok(AB.cardForEmailAddress("") == null); + + // Test - Check that we don't match an email that doesn't exist + Assert.ok(AB.cardForEmailAddress("nocard@this.email.invalid") == null); + + // Test - Check that we match this email and some of the fields + // of the card are correct. + var card = AB.cardForEmailAddress("PrimaryEmail1@test.invalid"); + + check_correct_card(card); + + // Test - Check that we match with the primary email with insensitive case. + card = AB.cardForEmailAddress("pRimaryemAIL1@teST.invalid"); + + check_correct_card(card); + + // Test - Check that we match with the second email. + card = AB.cardForEmailAddress("SecondEmail1\u00D0@test.invalid"); + + check_correct_card(card); + + // Test - Check that we match with the second email with insensitive case. + card = AB.cardForEmailAddress("SECondEMail1\u00D0@TEST.inValid"); + + check_correct_card(card); + + // Check that we match cards that have more than two email addresses. + card = AB.cardForEmailAddress("first@SOMETHING.invalid"); + Assert.equal(card.UID, "f68fbac4-158b-4bdc-95c6-592a5f93cfa1"); + Assert.equal(card.displayName, "A vCard!"); + + card = AB.cardForEmailAddress("second@something.INVALID"); + Assert.equal(card.UID, "f68fbac4-158b-4bdc-95c6-592a5f93cfa1"); + Assert.equal(card.displayName, "A vCard!"); + + card = AB.cardForEmailAddress("THIRD@something.invalid"); + Assert.equal(card.UID, "f68fbac4-158b-4bdc-95c6-592a5f93cfa1"); + Assert.equal(card.displayName, "A vCard!"); + + card = AB.cardForEmailAddress("FOURTH@SOMETHING.INVALID"); + Assert.equal(card.UID, "f68fbac4-158b-4bdc-95c6-592a5f93cfa1"); + Assert.equal(card.displayName, "A vCard!"); + + card = AB.cardForEmailAddress("A vCard!"); + Assert.equal(card, null); + + // Check getCardFromProperty returns null correctly for non-extant properties + Assert.equal(AB.getCardFromProperty("NickName", "", false), null); + Assert.equal(AB.getCardFromProperty("NickName", "NickName", false), null); + + // Check case-insensitive searching works + card = AB.getCardFromProperty("NickName", "NickName1", true); + check_correct_card(card); + card = AB.getCardFromProperty("NickName", "NickName1", false); + check_correct_card(card); + + Assert.equal(AB.getCardFromProperty("NickName", "nickName1", true), null); + + card = AB.getCardFromProperty("NickName", "nickName1", false); + check_correct_card(card); + + var cards = AB.getCardsFromProperty("LastName", "DOE", true); + Assert.equal(cards.length, 0); + + cards = AB.getCardsFromProperty("LastName", "Doe", true); + var i = 0; + var data = ["John", "Jane"]; + + for (card of cards) { + i++; + Assert.equal(card.lastName, "Doe"); + var index = data.indexOf(card.firstName); + Assert.notEqual(index, -1); + delete data[index]; + } + Assert.equal(i, 2); +} |