summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/addrbook/test/unit/test_nsAbManager2.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/addrbook/test/unit/test_nsAbManager2.js')
-rw-r--r--comm/mailnews/addrbook/test/unit/test_nsAbManager2.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/comm/mailnews/addrbook/test/unit/test_nsAbManager2.js b/comm/mailnews/addrbook/test/unit/test_nsAbManager2.js
new file mode 100644
index 0000000000..37238c51e8
--- /dev/null
+++ b/comm/mailnews/addrbook/test/unit/test_nsAbManager2.js
@@ -0,0 +1,83 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * Test suite for nsAbManager functions relating to add/delete directories and
+ * getting the list of directories..
+ */
+
+function checkDirs(aDirs, aDirArray) {
+ // Don't modify the passed in array.
+ var dirArray = aDirArray.concat();
+
+ for (let dir of aDirs) {
+ var loc = dirArray.indexOf(dir.URI);
+
+ Assert.equal(MailServices.ab.getDirectory(dir.URI), dir);
+
+ if (loc == -1) {
+ do_throw(
+ "Unexpected directory " + dir.URI + " found in address book list"
+ );
+ } else {
+ dirArray[loc] = null;
+ }
+ }
+
+ dirArray.forEach(function (value) {
+ Assert.equal(value, null);
+ });
+}
+
+function addDirectory(dirName) {
+ // Add the directory
+ let dirPrefId = MailServices.ab.newAddressBook(dirName, "", kPABData.dirType);
+ return MailServices.ab.getDirectoryFromId(dirPrefId);
+}
+
+async function run_test() {
+ var expectedABs = [kPABData.URI, kCABData.URI];
+
+ // Test - Check initial directories
+
+ checkDirs(MailServices.ab.directories, expectedABs);
+
+ // Test - Add a directory
+
+ var newDirectory1 = addDirectory("testAb1");
+
+ // Test - Check new directory list
+ expectedABs.push(newDirectory1.URI);
+
+ checkDirs(MailServices.ab.directories, expectedABs);
+
+ // Test - Repeat for a second directory
+
+ var newDirectory2 = addDirectory("testAb2");
+
+ // Test - Check new directory list
+ expectedABs.push(newDirectory2.URI);
+
+ checkDirs(MailServices.ab.directories, expectedABs);
+
+ // Test - Remove a directory
+
+ var pos = expectedABs.indexOf(newDirectory1.URI);
+
+ expectedABs.splice(pos, 1);
+
+ await promiseDirectoryRemoved(newDirectory1.URI);
+ newDirectory1 = null;
+
+ // Test - Check new directory list
+
+ checkDirs(MailServices.ab.directories, expectedABs);
+
+ // Test - Repeat the removal
+
+ await promiseDirectoryRemoved(newDirectory2.URI);
+ newDirectory2 = null;
+
+ expectedABs.pop();
+
+ // Test - Check new directory list
+ checkDirs(MailServices.ab.directories, expectedABs);
+}