summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/addrbook/test/unit/test_bug1522453.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/addrbook/test/unit/test_bug1522453.js')
-rw-r--r--comm/mailnews/addrbook/test/unit/test_bug1522453.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/comm/mailnews/addrbook/test/unit/test_bug1522453.js b/comm/mailnews/addrbook/test/unit/test_bug1522453.js
new file mode 100644
index 0000000000..b2da2eba12
--- /dev/null
+++ b/comm/mailnews/addrbook/test/unit/test_bug1522453.js
@@ -0,0 +1,72 @@
+var { setTimeout } = ChromeUtils.importESModule(
+ "resource://gre/modules/Timer.sys.mjs"
+);
+
+add_task(async function () {
+ do_get_profile();
+ MailServices.ab.directories;
+ let book = MailServices.ab.getDirectory(kPABData.URI);
+
+ let list = Cc["@mozilla.org/addressbook/directoryproperty;1"].createInstance(
+ Ci.nsIAbDirectory
+ );
+ list.isMailList = true;
+ list.dirName = "list";
+ list = book.addMailList(list);
+
+ let contact1 = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance(
+ Ci.nsIAbCard
+ );
+ contact1.firstName = "contact";
+ contact1.lastName = "1";
+ contact1.primaryEmail = "contact1@invalid";
+ contact1 = book.addCard(contact1);
+ list.addCard(contact1);
+
+ let contact2 = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance(
+ Ci.nsIAbCard
+ );
+ contact2.firstName = "contact";
+ contact2.lastName = "2";
+ // No email address!
+ contact2 = book.addCard(contact2);
+ list.addCard(contact2);
+
+ let contact3 = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance(
+ Ci.nsIAbCard
+ );
+ contact3.firstName = "contact";
+ contact3.lastName = "3";
+ contact3.primaryEmail = "contact3@invalid";
+ contact3 = book.addCard(contact3);
+ list.addCard(contact3);
+
+ // book.childCards should contain the list and all three contacts.
+ let bookCards = book.childCards;
+ equal(bookCards.length, 1 + 3);
+ equal(list.UID, bookCards[0].UID);
+ equal(contact1.UID, bookCards[1].UID);
+ equal(contact2.UID, bookCards[2].UID);
+ equal(contact3.UID, bookCards[3].UID);
+
+ // list.childCards should contain contacts 1 and 3, and crucially, not die at 2.
+ let listCards = list.childCards;
+ equal(listCards.length, 2);
+ equal(contact1.UID, listCards[0].UID);
+ equal(contact3.UID, listCards[1].UID);
+
+ // Reload the address book manager.
+ let reloadPromise = TestUtils.topicObserved("addrbook-reloaded");
+ Services.obs.notifyObservers(null, "addrbook-reload");
+ await reloadPromise;
+
+ // Renew our references.
+ book = MailServices.ab.getDirectory(kPABData.URI);
+ list = book.childNodes[0];
+
+ // list.childCards should contain contacts 1 and 3.
+ listCards = list.childCards;
+ equal(listCards.length, 2);
+ equal(contact1.UID, listCards[0].UID);
+ equal(contact3.UID, listCards[1].UID);
+});