gecko-dev/toolkit/modules/tests/browser/browser_PageMetadata.js

74 строки
2.3 KiB
JavaScript

/**
* Tests PageMetadata.jsm, which extracts metadata and microdata from a
* document.
*/
var {PageMetadata} = ChromeUtils.import("resource://gre/modules/PageMetadata.jsm", {});
var rootURL = "http://example.com/browser/toolkit/modules/tests/browser/";
function promiseDocument(fileName) {
let url = rootURL + fileName;
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.onload = () => resolve(xhr.responseXML);
xhr.onerror = () => reject(new Error("Error loading document"));
xhr.open("GET", url);
xhr.responseType = "document";
xhr.send();
});
}
/**
* Load a simple document.
*/
add_task(async function simpleDoc() {
let fileName = "metadata_simple.html";
info(`Loading a simple page, ${fileName}`);
let doc = await promiseDocument(fileName);
Assert.notEqual(doc, null,
"Should have a document to analyse");
let data = PageMetadata.getData(doc);
Assert.notEqual(data, null,
"Should have non-null result");
Assert.equal(data.url, rootURL + fileName,
"Should have expected url property");
Assert.equal(data.title, "Test Title",
"Should have expected title property");
Assert.equal(data.description, "A very simple test page",
"Should have expected title property");
});
add_task(async function titlesDoc() {
let fileName = "metadata_titles.html";
info(`Loading titles page, ${fileName}`);
let doc = await promiseDocument(fileName);
Assert.notEqual(doc, null,
"Should have a document to analyse");
let data = PageMetadata.getData(doc);
Assert.notEqual(data, null,
"Should have non-null result");
Assert.equal(data.title, "Test Titles",
"Should use the page title, not the open graph title");
});
add_task(async function titlesFallbackDoc() {
let fileName = "metadata_titles_fallback.html";
info(`Loading titles page, ${fileName}`);
let doc = await promiseDocument(fileName);
Assert.notEqual(doc, null,
"Should have a document to analyse");
let data = PageMetadata.getData(doc);
Assert.notEqual(data, null,
"Should have non-null result");
Assert.equal(data.title, "Title",
"Should use the open graph title");
});