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
const tabmail = document.getElementById("tabmail");
let createReminderForm;
add_setup(async () => {
const tab = tabmail.openTab("contentTab", {
});
await BrowserTestUtils.browserLoaded(tab.browser, undefined, url =>
url.endsWith("calendarDialogCreateReminderForm.xhtml")
);
tab.browser.focus();
createReminderForm = tab.browser.contentWindow.document.querySelector(
"calendar-dialog-create-reminder-form"
);
});
registerCleanupFunction(() => {
tabmail.closeOtherTabs(tabmail.tabInfo[0]);
});
add_task(function test_toggleFormVisibility() {
const addButton = createReminderForm.querySelector(".add-reminder-button");
const form = createReminderForm.querySelector("form");
const deleteButton = form.querySelector(".delete-button");
Assert.ok(BrowserTestUtils.isHidden(form), "Form should initially be hidden");
Assert.ok(
BrowserTestUtils.isVisible(addButton),
"Add button should initially be visible"
);
EventUtils.synthesizeMouseAtCenter(
addButton,
{},
createReminderForm.documentGlobal
);
Assert.ok(
BrowserTestUtils.isVisible(form),
"Should show form after clicking add"
);
Assert.ok(
BrowserTestUtils.isHidden(addButton),
"Should hide add button after clicking it"
);
EventUtils.synthesizeMouseAtCenter(
deleteButton,
{},
createReminderForm.documentGlobal
);
Assert.ok(
BrowserTestUtils.isHidden(form),
"Form should be hidden after delete button click"
);
Assert.ok(
BrowserTestUtils.isVisible(addButton),
"Add button should be visible again"
);
});
add_task(function test_defaultFromPreferences() {
const defaultOffset = cal.alarms.getDefaultOffset("event");
const select = createReminderForm.querySelector("form select");
Assert.ok(defaultOffset.isNegative, "Default offset should be negative");
const offsetInMinutes = Math.floor(-defaultOffset.inSeconds / 60);
Assert.equal(
select.value,
offsetInMinutes,
"Should select the default reminder offset"
);
});
add_task(async function test_addingNewReminder() {
const addButton = createReminderForm.querySelector(".add-reminder-button");
const select = createReminderForm.querySelector("form select");
const submit = createReminderForm.querySelector("form .pill-button");
EventUtils.synthesizeMouseAtCenter(
addButton,
{},
createReminderForm.documentGlobal
);
select.value = "720";
const onNewReminder = BrowserTestUtils.waitForEvent(
createReminderForm,
"new-reminder"
);
EventUtils.synthesizeMouseAtCenter(
submit,
{},
createReminderForm.documentGlobal
);
const newReminderEvent = await onNewReminder;
Assert.ok(
BrowserTestUtils.isHidden(createReminderForm.querySelector("form")),
"Should hide form after submit"
);
Assert.ok(
BrowserTestUtils.isVisible(addButton),
"Should show add button again after submission"
);
Assert.deepEqual(
newReminderEvent.detail,
{ minutesBefore: 720 },
"Should pass selected reminder offset in event"
);
});
add_task(function test_focus() {
const addButton = createReminderForm.querySelector(".add-reminder-button");
const select = createReminderForm.querySelector("form select");
const submit = createReminderForm.querySelector("form .pill-button");
const deleteButton = createReminderForm.querySelector(".delete-button");
EventUtils.synthesizeMouseAtCenter(
addButton,
{},
createReminderForm.documentGlobal
);
Assert.equal(
createReminderForm.ownerDocument.activeElement,
select,
"Select should be focused after being shown"
);
EventUtils.synthesizeMouseAtCenter(
submit,
{},
createReminderForm.documentGlobal
);
Assert.equal(
createReminderForm.ownerDocument.activeElement,
addButton,
"Add button should be focused after submit"
);
EventUtils.synthesizeMouseAtCenter(
addButton,
{},
createReminderForm.documentGlobal
);
Assert.equal(
createReminderForm.ownerDocument.activeElement,
select,
"Select should be focused again when shown"
);
EventUtils.synthesizeMouseAtCenter(
deleteButton,
{},
createReminderForm.documentGlobal
);
Assert.equal(
createReminderForm.ownerDocument.activeElement,
addButton,
"Add button should be focused after canceling form"
);
});