summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/addrbook/test/unit/test_nsAbAutoCompleteMyDomain.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/addrbook/test/unit/test_nsAbAutoCompleteMyDomain.js')
-rw-r--r--comm/mailnews/addrbook/test/unit/test_nsAbAutoCompleteMyDomain.js128
1 files changed, 128 insertions, 0 deletions
diff --git a/comm/mailnews/addrbook/test/unit/test_nsAbAutoCompleteMyDomain.js b/comm/mailnews/addrbook/test/unit/test_nsAbAutoCompleteMyDomain.js
new file mode 100644
index 0000000000..8faf6e064a
--- /dev/null
+++ b/comm/mailnews/addrbook/test/unit/test_nsAbAutoCompleteMyDomain.js
@@ -0,0 +1,128 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * Test suite for nsAbAutoCompleteSearch
+ */
+
+var ACR = Ci.nsIAutoCompleteResult;
+
+function acObserver() {}
+
+acObserver.prototype = {
+ _search: null,
+ _result: null,
+
+ onSearchResult(aSearch, aResult) {
+ this._search = aSearch;
+ this._result = aResult;
+ },
+};
+
+function run_test() {
+ // Test - Create a new search component
+
+ var acs = Cc["@mozilla.org/autocomplete/search;1?name=mydomain"].getService(
+ Ci.nsIAutoCompleteSearch
+ );
+
+ var obs = new acObserver();
+ let obsNews = new acObserver();
+ let obsFollowup = new acObserver();
+
+ // Set up an identity in the account manager with the default settings
+ let identity = MailServices.accounts.createIdentity();
+
+ // Initially disable autocomplete
+ identity.autocompleteToMyDomain = false;
+ identity.email = "myemail@foo.invalid";
+
+ // Set up autocomplete parameters
+ let params = JSON.stringify({ idKey: identity.key, type: "addr_to" });
+ let paramsNews = JSON.stringify({
+ idKey: identity.key,
+ type: "addr_newsgroups",
+ });
+ let paramsFollowup = JSON.stringify({
+ idKey: identity.key,
+ type: "addr_followup",
+ });
+
+ // Test - Valid search - this should return no results (autocomplete disabled)
+ acs.startSearch("test", params, null, obs);
+
+ Assert.equal(obs._search, acs);
+ Assert.equal(obs._result.searchString, "test");
+ Assert.equal(obs._result.searchResult, ACR.RESULT_FAILURE);
+ Assert.equal(obs._result.errorDescription, null);
+ Assert.equal(obs._result.matchCount, 0);
+
+ // Now enable autocomplete for this identity
+ identity.autocompleteToMyDomain = true;
+
+ // Test - Search with empty string
+
+ acs.startSearch(null, params, null, obs);
+
+ Assert.equal(obs._search, acs);
+ Assert.equal(obs._result.searchString, null);
+ Assert.equal(obs._result.searchResult, ACR.RESULT_FAILURE);
+ Assert.equal(obs._result.errorDescription, null);
+ Assert.equal(obs._result.matchCount, 0);
+
+ acs.startSearch("", params, null, obs);
+
+ Assert.equal(obs._search, acs);
+ Assert.equal(obs._result.searchString, "");
+ Assert.equal(obs._result.searchResult, ACR.RESULT_FAILURE);
+ Assert.equal(obs._result.errorDescription, null);
+ Assert.equal(obs._result.matchCount, 0);
+
+ // Test - Check ignoring result with comma
+
+ acs.startSearch("a,b", params, null, obs);
+
+ Assert.equal(obs._search, acs);
+ Assert.equal(obs._result.searchString, "a,b");
+ Assert.equal(obs._result.searchResult, ACR.RESULT_FAILURE);
+ Assert.equal(obs._result.errorDescription, null);
+ Assert.equal(obs._result.matchCount, 0);
+
+ // Test - Check returning search string with @ sign
+
+ acs.startSearch("a@b", params, null, obs);
+
+ Assert.equal(obs._search, acs);
+ Assert.equal(obs._result.searchString, "a@b");
+ Assert.equal(obs._result.searchResult, ACR.RESULT_SUCCESS);
+ Assert.equal(obs._result.errorDescription, null);
+ Assert.equal(obs._result.matchCount, 1);
+
+ Assert.equal(obs._result.getValueAt(0), "a@b");
+ Assert.equal(obs._result.getLabelAt(0), "a@b");
+ Assert.equal(obs._result.getCommentAt(0), null);
+ Assert.equal(obs._result.getStyleAt(0), "default-match");
+ Assert.equal(obs._result.getImageAt(0), null);
+
+ // No autocomplete for addr_newsgroups!
+ acs.startSearch("a@b", paramsNews, null, obsNews);
+ Assert.ok(obsNews._result == null || obsNews._result.matchCount == 0);
+
+ // No autocomplete for addr_followup!
+ acs.startSearch("a@b", paramsFollowup, null, obsFollowup);
+ Assert.ok(obsFollowup._result == null || obsFollowup._result.matchCount == 0);
+
+ // Test - Add default domain
+
+ acs.startSearch("test1", params, null, obs);
+
+ Assert.equal(obs._search, acs);
+ Assert.equal(obs._result.searchString, "test1");
+ Assert.equal(obs._result.searchResult, ACR.RESULT_SUCCESS);
+ Assert.equal(obs._result.errorDescription, null);
+ Assert.equal(obs._result.matchCount, 1);
+
+ Assert.equal(obs._result.getValueAt(0), "test1@foo.invalid");
+ Assert.equal(obs._result.getLabelAt(0), "test1@foo.invalid");
+ Assert.equal(obs._result.getCommentAt(0), null);
+ Assert.equal(obs._result.getStyleAt(0), "default-match");
+ Assert.equal(obs._result.getImageAt(0), null);
+}