diff options
Diffstat (limited to 'toolkit/components/places/tests/queries/test_searchTerms_time.js')
-rw-r--r-- | toolkit/components/places/tests/queries/test_searchTerms_time.js | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/toolkit/components/places/tests/queries/test_searchTerms_time.js b/toolkit/components/places/tests/queries/test_searchTerms_time.js new file mode 100644 index 0000000000..39fd1353eb --- /dev/null +++ b/toolkit/components/places/tests/queries/test_searchTerms_time.js @@ -0,0 +1,109 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// This test ensures that visitis are correctly live-updated in a history +// query filtered on searchterms and time. + +const USEC_PER_DAY = 86400000000; +const now = PlacesUtils.toPRTime(new Date()); + +add_task(async function pages_query() { + let query = PlacesUtils.history.getNewQuery(); + query.beginTime = now - 15 * USEC_PER_DAY; + query.endTime = now - 5 * USEC_PER_DAY; + query.beginTimeReference = PlacesUtils.history.TIME_RELATIVE_EPOCH; + query.endTimeReference = PlacesUtils.history.TIME_RELATIVE_EPOCH; + query.searchTerms = "mo"; + + let options = PlacesUtils.history.getNewQueryOptions(); + options.sortingMode = options.SORT_BY_URI_ASCENDING; + options.resultType = options.RESULTS_AS_URI; + await testQuery(query, options); + + options.sortingMode = options.SORT_BY_DATE_ASCENDING; + options.resultType = options.RESULTS_AS_VISITS; + await testQuery(query, options); +}); + +async function testQuery(query, options) { + let root = PlacesUtils.history.executeQuery(query, options).root; + root.containerOpen = true; + + Assert.equal(root.childCount, 0, "There should be zero results initially"); + + await PlacesTestUtils.addVisits([ + // SearchTerms matching URL but out of the timeframe. + { + url: "https://test.moz.org", + title: "abc", + visitDate: now - 2 * USEC_PER_DAY, + }, + // In the timeframe but no searchTerms match. + { + url: "https://test.def.org", + title: "def", + visitDate: now - 10 * USEC_PER_DAY, + }, + // In the timeframe, matching title. + { + url: "https://test.ghi.org", + title: "amo", + visitDate: now - 10 * USEC_PER_DAY, + }, + ]); + + Assert.equal(root.childCount, 1, "Check matching results"); + let node = root.getChild(0); + Assert.equal(node.title, "amo"); + + // Change title so it's no longer matching. + await PlacesTestUtils.addVisits({ + url: "https://test.ghi.org", + title: "ghi", + visitDate: now - 10 * USEC_PER_DAY, + }); + + Assert.equal(root.childCount, 0, "Check matching results"); + + // Add visit in the timeframe. + await PlacesTestUtils.addVisits({ + url: "https://test.moz.org", + title: "abc", + visitDate: now - 10 * USEC_PER_DAY, + }); + + Assert.equal(root.childCount, 1, "Check matching results"); + node = root.getChild(0); + Assert.equal(node.title, "abc"); + + // Remove visit in the timeframe. + await PlacesUtils.history.removeVisitsByFilter({ + beginDate: PlacesUtils.toDate(now - 15 * USEC_PER_DAY), + endDate: PlacesUtils.toDate(now - 5 * USEC_PER_DAY), + }); + await PlacesTestUtils.dumpTable({ + table: "moz_places", + columns: ["id", "url"], + }); + await PlacesTestUtils.dumpTable({ + table: "moz_historyvisits", + columns: ["place_id", "visit_date"], + }); + + Assert.equal(root.childCount, 0, "Check matching results"); + + // Add matching visit out of the timeframe. + await PlacesTestUtils.addVisits( + // SearchTerms matching URL but out of the timeframe. + { + url: "https://test.mozilla.org", + title: "mozilla", + visitDate: now - 2 * USEC_PER_DAY, + } + ); + + Assert.equal(root.childCount, 0, "Check matching results"); + + root.containerOpen = false; + await PlacesUtils.history.clear(); +} |