Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
const testData = {
"http://foo.com/": ["tag1", "tag 2", "Space ☺️ Between"].sort(),
"http://bar.com/": ["tag1", "tag 2"].sort(),
"http://baz.com/": ["tag 2", "Space ☺️ Between"].sort(),
"http://qux.com/": ["Space ☺️ Between"],
};
const formattedTestData = [];
for (const [uri, tagArray] of Object.entries(testData)) {
formattedTestData.push({
title: `Title of ${uri}`,
uri,
isBookmark: true,
isTag: true,
tagArray,
});
}
add_task(async function test_results_as_tags_root() {
await task_populateDB(formattedTestData);
// Construct URL - tag mapping from tag query.
const actualData = {};
for (const uri in testData) {
if (testData.hasOwnProperty(uri)) {
actualData[uri] = [];
}
}
const options = PlacesUtils.history.getNewQueryOptions();
options.resultType = options.RESULTS_AS_TAGS_ROOT;
const query = PlacesUtils.history.getNewQuery();
const root = PlacesUtils.history.executeQuery(query, options).root;
root.containerOpen = true;
Assert.equal(root.childCount, 3, "We should get as many results as tags.");
displayResultSet(root);
for (let i = 0; i < root.childCount; ++i) {
const node = root.getChild(i);
const tagName = node.title;
Assert.equal(
node.type,
node.RESULT_TYPE_QUERY,
"Result type should be RESULT_TYPE_QUERY."
);
const subRoot = node.QueryInterface(Ci.nsINavHistoryContainerResultNode);
subRoot.containerOpen = true;
for (let j = 0; j < subRoot.childCount; ++j) {
actualData[subRoot.getChild(j).uri].push(tagName);
actualData[subRoot.getChild(j).uri].sort();
}
}
Assert.deepEqual(
actualData,
testData,
"URI-tag mapping should be same from query and initial data."
);
});