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 {
getAvailableItemIdsForSpace,
getDefaultItemIdsForSpace,
MULTIPLE_ALLOWED_ITEM_IDS,
SKIP_FOCUS_ITEM_IDS,
} = ChromeUtils.importESModule("resource:///modules/CustomizableItems.sys.mjs");
const { default: CUSTOMIZABLE_ITEMS } = ChromeUtils.importESModule(
);
add_task(function test_getAvailableItemIdsForSpace_anySpace() {
const itemsForAnySpace = getAvailableItemIdsForSpace();
Assert.ok(Array.isArray(itemsForAnySpace), "returns an array");
for (const itemId of itemsForAnySpace) {
Assert.equal(typeof itemId, "string", `item ID "${itemId}" is string`);
Assert.greater(itemId.length, 0, `item ID is not empty`);
}
});
add_task(function test_getAvailableItemIdsForSpace_emptySpace() {
const itemsForEmptySpace = getAvailableItemIdsForSpace("test");
Assert.deepEqual(itemsForEmptySpace, [], "Empty array for empty space");
});
add_task(function test_getAvailableItemIdsForSpace_includingAgnostic() {
const items = getAvailableItemIdsForSpace("mail", true);
const itemsForAnySpace = getAvailableItemIdsForSpace();
const itemsForMailSpace = getAvailableItemIdsForSpace("mail");
Assert.ok(
itemsForAnySpace.every(itemId => items.includes(itemId)),
"All space agnostic items are included"
);
Assert.ok(
itemsForMailSpace.every(itemId => items.includes(itemId)),
"All mail space items are included"
);
});
add_task(function test_getDefaultItemIdsForSpace_default() {
const items = getDefaultItemIdsForSpace("default");
Assert.ok(Array.isArray(items), "Should return an array");
Assert.deepEqual(
items,
["spacer", "search-bar", "spacer"],
"Default space should contain the default item set"
);
});
add_task(function test_getDefaultItemIdsForSpace_cloningArray() {
const items1 = getDefaultItemIdsForSpace("default");
const items2 = getDefaultItemIdsForSpace("default");
const items3 = getDefaultItemIdsForSpace("mail");
Assert.notStrictEqual(
items1,
items2,
"The default sets should be different array instances"
);
Assert.notStrictEqual(
items2,
items3,
"The second default set an mail space should be different array instances"
);
Assert.notStrictEqual(
items3,
items1,
"The mail space and first default set should be different array instances"
);
Assert.deepEqual(
items1,
items2,
"The two default pseudospace sets should contain the same items"
);
});
add_task(function test_multipleAllowedItemIds() {
Assert.equal(
typeof MULTIPLE_ALLOWED_ITEM_IDS.has,
"function",
"Multiple allowed item IDs should be set-like"
);
Assert.ok(
Array.from(MULTIPLE_ALLOWED_ITEM_IDS).every(
itemId => typeof itemId === "string"
),
"Every item in the set should be a string"
);
for (const item of CUSTOMIZABLE_ITEMS) {
Assert.equal(
MULTIPLE_ALLOWED_ITEM_IDS.has(item.id),
Boolean(item.allowMultiple),
`Set's state should matche the allowMultiple value of ${item.allowMultiple} for ${item.id}`
);
}
});
add_task(function test_skipFocusItemIds() {
Assert.equal(
typeof SKIP_FOCUS_ITEM_IDS.has,
"function",
"Skip focus item IDs should be set-like"
);
Assert.ok(
Array.from(SKIP_FOCUS_ITEM_IDS).every(itemId => typeof itemId === "string"),
"Every item in the set should be a string"
);
for (const item of CUSTOMIZABLE_ITEMS) {
Assert.equal(
SKIP_FOCUS_ITEM_IDS.has(item.id),
Boolean(item.skipFocus),
`Set's state should match the skipFocus value of ${item.skipFocus} for ${item.id}`
);
}
});