Revision control

Copy as Markdown

Other Tools

/* 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/. */
const tabmail = document.getElementById("tabmail");
let categoriesElement;
add_setup(async function () {
const tab = tabmail.openTab("contentTab", {
});
await BrowserTestUtils.browserLoaded(tab.browser, undefined, url =>
url.endsWith("calendarDialogCategories.xhtml")
);
tab.browser.focus();
categoriesElement = tab.browser.contentWindow.document.querySelector(
"calendar-dialog-categories"
);
});
registerCleanupFunction(() => {
tabmail.closeOtherTabs(tabmail.tabInfo[0]);
});
add_task(function test_setCategories() {
const categoriesList =
categoriesElement.shadowRoot.querySelector(".categories-list");
const overflowLabel =
categoriesElement.shadowRoot.querySelector(".overflow-label");
function assertCategories(categories) {
Assert.equal(
categoriesList.childElementCount,
categories.length,
"Category count should match expected count"
);
for (const [index, category] of categories.entries()) {
const item = categoriesList.children[index];
Assert.equal(
item.tagName,
"li",
`Category item at index ${index} should be a list item`
);
Assert.equal(
item.textContent,
category,
`Should find expected category text at index ${index}`
);
Assert.equal(
item.title,
category,
`Should find expected category tooltip at index ${index}`
);
}
}
Assert.equal(
categoriesElement.constructor.MAX_VISIBLE_CATEGORIES,
3,
"Max visible categories should be the default value"
);
categoriesElement.setCategories([]);
Assert.ok(
BrowserTestUtils.isHidden(overflowLabel),
"Overflow is hidden without categories"
);
Assert.equal(
categoriesList.childElementCount,
0,
"Should have no categories"
);
categoriesElement.setCategories(["Lorem", "ipsum", "dolor"]);
Assert.ok(
BrowserTestUtils.isHidden(overflowLabel),
"Should show no overflow with three categories"
);
assertCategories(["Lorem", "ipsum", "dolor"]);
const allCategories = ["Lorem ipsum", "dolor", "sit", "amet"];
categoriesElement.setCategories(allCategories);
assertCategories(allCategories.slice(0, 3));
Assert.ok(
BrowserTestUtils.isVisible(overflowLabel),
"Overflow label should be visible"
);
const { id, args } = document.l10n.getAttributes(overflowLabel);
Assert.equal(
id,
"calendar-dialog-more-categories",
"Should have expected string for overflow label"
);
Assert.equal(args.additionalCategories, 1, "Should have one more category");
for (const category of allCategories) {
Assert.stringContains(
args.categories,
category,
"Tooltip variable should contain category"
);
}
categoriesElement.setCategories([]);
Assert.ok(
BrowserTestUtils.isHidden(overflowLabel),
"Overflow is hidden again"
);
Assert.equal(
categoriesList.childElementCount,
0,
"Should have no categories again"
);
});