summaryrefslogtreecommitdiffstats
path: root/toolkit/components/places/tests/queries/test_results-as-tag-contents-query.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/places/tests/queries/test_results-as-tag-contents-query.js')
-rw-r--r--toolkit/components/places/tests/queries/test_results-as-tag-contents-query.js127
1 files changed, 127 insertions, 0 deletions
diff --git a/toolkit/components/places/tests/queries/test_results-as-tag-contents-query.js b/toolkit/components/places/tests/queries/test_results-as-tag-contents-query.js
new file mode 100644
index 000000000..f1cbfd4d8
--- /dev/null
+++ b/toolkit/components/places/tests/queries/test_results-as-tag-contents-query.js
@@ -0,0 +1,127 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim:set ts=2 sw=2 sts=2 et: */
+/* 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/. */
+
+var testData = [
+ { isInQuery: true,
+ isDetails: true,
+ title: "bmoz",
+ uri: "http://foo.com/",
+ isBookmark: true,
+ isTag: true,
+ tagArray: ["bugzilla"] },
+
+ { isInQuery: true,
+ isDetails: true,
+ title: "C Moz",
+ uri: "http://foo.com/changeme1.html",
+ isBookmark: true,
+ isTag: true,
+ tagArray: ["moz", "bugzilla"] },
+
+ { isInQuery: false,
+ isDetails: true,
+ title: "amo",
+ uri: "http://foo2.com/",
+ isBookmark: true,
+ isTag: true,
+ tagArray: ["moz"] },
+
+ { isInQuery: false,
+ isDetails: true,
+ title: "amo",
+ uri: "http://foo.com/changeme2.html",
+ isBookmark: true },
+];
+
+function getIdForTag(aTagName) {
+ var id = -1;
+ var query = PlacesUtils.history.getNewQuery();
+ query.setFolders([PlacesUtils.tagsFolderId], 1);
+ var options = PlacesUtils.history.getNewQueryOptions();
+ var root = PlacesUtils.history.executeQuery(query, options).root;
+ root.containerOpen = true;
+ var cc = root.childCount;
+ do_check_eq(root.childCount, 2);
+ for (let i = 0; i < cc; i++) {
+ let node = root.getChild(i);
+ if (node.title == aTagName) {
+ id = node.itemId;
+ break;
+ }
+ }
+ root.containerOpen = false;
+ return id;
+}
+
+ /**
+ * This test will test Queries that use relative search terms and URI options
+ */
+function run_test()
+{
+ run_next_test();
+}
+
+add_task(function* test_results_as_tag_contents_query()
+{
+ yield task_populateDB(testData);
+
+ // Get tag id.
+ let tagId = getIdForTag("bugzilla");
+ do_check_true(tagId > 0);
+
+ var options = PlacesUtils.history.getNewQueryOptions();
+ options.resultType = options.RESULTS_AS_TAG_CONTENTS;
+ var query = PlacesUtils.history.getNewQuery();
+ query.setFolders([tagId], 1);
+
+ var root = PlacesUtils.history.executeQuery(query, options).root;
+ root.containerOpen = true;
+
+ displayResultSet(root);
+ // Cannot use compare array to results, since results ordering is hardcoded
+ // and depending on lastModified (that could have VM timers issues).
+ testData.forEach(function(aEntry) {
+ if (aEntry.isInResult)
+ do_check_true(isInResult({uri: "http://foo.com/added.html"}, root));
+ });
+
+ // If that passes, check liveupdate
+ // Add to the query set
+ var change1 = { isVisit: true,
+ isDetails: true,
+ uri: "http://foo.com/added.html",
+ title: "mozadded",
+ isBookmark: true,
+ isTag: true,
+ tagArray: ["moz", "bugzilla"] };
+ do_print("Adding item to query");
+ yield task_populateDB([change1]);
+ do_print("These results should have been LIVE UPDATED with the new addition");
+ displayResultSet(root);
+ do_check_true(isInResult(change1, root));
+
+ // Add one by adding a tag, remove one by removing search term.
+ do_print("Updating items");
+ var change2 = [{ isDetails: true,
+ uri: "http://foo3.com/",
+ title: "foo"},
+ { isDetails: true,
+ uri: "http://foo.com/changeme2.html",
+ title: "zydeco",
+ isBookmark:true,
+ isTag: true,
+ tagArray: ["bugzilla", "moz"] }];
+ yield task_populateDB(change2);
+ do_check_false(isInResult({uri: "http://fooz.com/"}, root));
+ do_check_true(isInResult({uri: "http://foo.com/changeme2.html"}, root));
+
+ // Test removing a tag updates us.
+ do_print("Deleting item");
+ PlacesUtils.tagging.untagURI(uri("http://foo.com/changeme2.html"), ["bugzilla"]);
+ do_check_false(isInResult({uri: "http://foo.com/changeme2.html"}, root));
+
+ root.containerOpen = false;
+});