summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/search/test/unit/test_searchCustomTerm.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/search/test/unit/test_searchCustomTerm.js')
-rw-r--r--comm/mailnews/search/test/unit/test_searchCustomTerm.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/comm/mailnews/search/test/unit/test_searchCustomTerm.js b/comm/mailnews/search/test/unit/test_searchCustomTerm.js
new file mode 100644
index 0000000000..baea69767b
--- /dev/null
+++ b/comm/mailnews/search/test/unit/test_searchCustomTerm.js
@@ -0,0 +1,112 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Testing of custom search features.
+ *
+ */
+/* import-globals-from ../../../test/resources/searchTestUtils.js */
+load("../../../resources/searchTestUtils.js");
+
+var { MailServices } = ChromeUtils.import(
+ "resource:///modules/MailServices.jsm"
+);
+
+var kCustomId = "xpcomtest@mozilla.org#test";
+var gHdr;
+
+var Tests = [
+ {
+ setValue: "iamgood",
+ testValue: "iamnotgood",
+ op: Ci.nsMsgSearchOp.Is,
+ count: 0,
+ },
+ {
+ setValue: "iamgood",
+ testValue: "iamgood",
+ op: Ci.nsMsgSearchOp.Is,
+ count: 1,
+ },
+];
+
+// nsIMsgSearchCustomTerm object
+var customTerm = {
+ id: kCustomId,
+ name: "term name",
+ getEnabled(scope, op) {
+ return (
+ scope == Ci.nsMsgSearchScope.offlineMail && op == Ci.nsMsgSearchOp.Is
+ );
+ },
+ getAvailable(scope, op) {
+ return (
+ scope == Ci.nsMsgSearchScope.offlineMail && op == Ci.nsMsgSearchOp.Is
+ );
+ },
+ getAvailableOperators(scope) {
+ return [Ci.nsMsgSearchOp.Is];
+ },
+ match(msgHdr, searchValue, searchOp) {
+ switch (searchOp) {
+ case Ci.nsMsgSearchOp.Is:
+ if (msgHdr.getStringProperty("theTestProperty") == searchValue) {
+ return true;
+ }
+ }
+ return false;
+ },
+};
+
+function run_test() {
+ localAccountUtils.loadLocalMailAccount();
+ MailServices.filters.addCustomTerm(customTerm);
+
+ var copyListener = {
+ OnStartCopy() {},
+ OnProgress(aProgress, aProgressMax) {},
+ SetMessageKey(aKey) {
+ gHdr = localAccountUtils.inboxFolder.GetMessageHeader(aKey);
+ },
+ SetMessageId(aMessageId) {},
+ OnStopCopy(aStatus) {
+ doTest();
+ },
+ };
+
+ // Get a message into the local filestore.
+ // function testSearch() continues the testing after the copy.
+ let bugmail1 = do_get_file("../../../data/bugmail1");
+ do_test_pending();
+
+ MailServices.copy.copyFileMessage(
+ bugmail1,
+ localAccountUtils.inboxFolder,
+ null,
+ false,
+ 0,
+ "",
+ copyListener,
+ null
+ );
+}
+
+function doTest() {
+ let test = Tests.shift();
+ if (test) {
+ gHdr.setStringProperty("theTestProperty", test.setValue);
+ new TestSearch(
+ localAccountUtils.inboxFolder,
+ test.testValue,
+ Ci.nsMsgSearchAttrib.Custom,
+ test.op,
+ test.count,
+ doTest,
+ kCustomId
+ );
+ } else {
+ gHdr = null;
+ do_test_finished();
+ }
+}