Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* eslint max-len: ["error", 80] */
let gProvider;
function dateHoursAgo(hours) {
let date = new Date();
date.setTime(date.getTime() - hours * 3600000);
return date;
}
add_task(async function enableHtmlViews() {
gProvider = new MockProvider();
gProvider.createAddons([
{
id: "addon-today-2@mochi.test",
name: "Updated today two",
creator: { name: "The creator" },
version: "3.3",
type: "extension",
updateDate: dateHoursAgo(6),
},
{
id: "addon-today-3@mochi.test",
name: "Updated today three",
creator: { name: "The creator" },
version: "3.3",
type: "extension",
updateDate: dateHoursAgo(9),
},
{
id: "addon-today-1@mochi.test",
name: "Updated today",
creator: { name: "The creator" },
version: "3.1",
type: "extension",
releaseNotesURI: "http://example.com/notes.txt",
updateDate: dateHoursAgo(1),
},
{
id: "addon-yesterday-1@mochi.test",
name: "Updated yesterday one",
creator: { name: "The creator" },
version: "3.3",
type: "extension",
updateDate: dateHoursAgo(15),
},
{
id: "addon-earlier@mochi.test",
name: "Updated earlier",
creator: { name: "The creator" },
version: "3.3",
type: "extension",
updateDate: dateHoursAgo(49),
},
{
id: "addon-yesterday-2@mochi.test",
name: "Updated yesterday",
creator: { name: "The creator" },
version: "3.3",
type: "extension",
updateDate: dateHoursAgo(24),
},
{
id: "addon-lastweek@mochi.test",
name: "Updated last week",
creator: { name: "The creator" },
version: "3.3",
type: "extension",
updateDate: dateHoursAgo(192),
},
]);
});
add_task(async function testRecentUpdatesList() {
// Load extension view first so we can mock the startOfDay property.
let win = await loadInitialView("extension");
let doc = win.document;
let categoryUtils = new CategoryUtilities(win);
const RECENT_URL = "addons://updates/recent";
let recentCat = categoryUtils.get("recent-updates");
ok(recentCat.hidden, "Recent updates category is initially hidden");
// Load the recent updates view.
let loaded = waitForViewLoad(win);
doc.querySelector('#page-options [action="view-recent-updates"]').click();
await loaded;
is(
categoryUtils.getSelectedViewId(),
RECENT_URL,
"Recent updates is selected"
);
ok(!recentCat.hidden, "Recent updates category is now shown");
// Find all the add-on ids.
let list = doc.querySelector("addon-list");
let addonsInOrder = () =>
Array.from(list.querySelectorAll("addon-card"))
.map(card => card.addon.id)
.filter(id => id.endsWith("@mochi.test"));
// Verify that the add-ons are in the right order.
Assert.deepEqual(
addonsInOrder(),
[
"addon-today-1@mochi.test",
"addon-today-2@mochi.test",
"addon-today-3@mochi.test",
"addon-yesterday-1@mochi.test",
"addon-yesterday-2@mochi.test",
],
"The add-ons are in the right order"
);
info("Check that release notes are shown on the details page");
let card = list.querySelector(
'addon-card[addon-id="addon-today-1@mochi.test"]'
);
loaded = waitForViewLoad(win);
card.querySelector('[action="expand"]').click();
await loaded;
card = doc.querySelector("addon-card");
ok(card.expanded, "The card is expanded");
ok(!card.details.tabGroup.hidden, "The tabs are shown");
ok(
!card.details.tabGroup.querySelector('[name="release-notes"]').hidden,
"The release notes button is shown"
);
info("Go back to the recent updates view");
loaded = waitForViewLoad(win);
doc.querySelector('#page-options [action="view-recent-updates"]').click();
await loaded;
// Find the list again.
list = doc.querySelector("addon-list");
info("Install a new add-on, it should be first in the list");
// Install a new extension.
let extension = ExtensionTestUtils.loadExtension({
manifest: {
name: "New extension",
browser_specific_settings: { gecko: { id: "new@mochi.test" } },
},
useAddonManager: "temporary",
});
let added = BrowserTestUtils.waitForEvent(list, "add");
await extension.startup();
await added;
// The new extension should now be at the top of the list.
Assert.deepEqual(
addonsInOrder(),
[
"new@mochi.test",
"addon-today-1@mochi.test",
"addon-today-2@mochi.test",
"addon-today-3@mochi.test",
"addon-yesterday-1@mochi.test",
"addon-yesterday-2@mochi.test",
],
"The new add-on went to the top"
);
// Open the detail view for the new add-on.
card = list.querySelector('addon-card[addon-id="new@mochi.test"]');
loaded = waitForViewLoad(win);
card.querySelector('[action="expand"]').click();
await loaded;
is(
categoryUtils.getSelectedViewId(),
"The extensions category is selected"
);
await closeView(win);
await extension.unload();
});