summaryrefslogtreecommitdiffstats
path: root/comm/calendar/test/unit/test_alarmutils.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/calendar/test/unit/test_alarmutils.js')
-rw-r--r--comm/calendar/test/unit/test_alarmutils.js171
1 files changed, 171 insertions, 0 deletions
diff --git a/comm/calendar/test/unit/test_alarmutils.js b/comm/calendar/test/unit/test_alarmutils.js
new file mode 100644
index 0000000000..e51453367d
--- /dev/null
+++ b/comm/calendar/test/unit/test_alarmutils.js
@@ -0,0 +1,171 @@
+/* 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/. */
+
+var { cal } = ChromeUtils.import("resource:///modules/calendar/calUtils.jsm");
+var { XPCOMUtils } = ChromeUtils.importESModule("resource://gre/modules/XPCOMUtils.sys.mjs");
+
+XPCOMUtils.defineLazyModuleGetters(this, {
+ CalAlarm: "resource:///modules/CalAlarm.jsm",
+ CalEvent: "resource:///modules/CalEvent.jsm",
+ CalTodo: "resource:///modules/CalTodo.jsm",
+});
+
+function run_test() {
+ do_calendar_startup(run_next_test);
+}
+
+add_task(async function test_setDefaultValues_events() {
+ let item, alarm;
+
+ Services.prefs.setIntPref("calendar.alarms.onforevents", 1);
+ Services.prefs.setStringPref("calendar.alarms.eventalarmunit", "hours");
+ Services.prefs.setIntPref("calendar.alarms.eventalarmlen", 60);
+ item = new CalEvent();
+ cal.alarms.setDefaultValues(item);
+ alarm = item.getAlarms()[0];
+ ok(alarm);
+ equal(alarm.related, Ci.calIAlarm.ALARM_RELATED_START);
+ equal(alarm.action, "DISPLAY");
+ equal(alarm.offset.icalString, "-P2DT12H");
+
+ Services.prefs.setIntPref("calendar.alarms.onforevents", 1);
+ Services.prefs.setStringPref("calendar.alarms.eventalarmunit", "yards");
+ Services.prefs.setIntPref("calendar.alarms.eventalarmlen", 20);
+ item = new CalEvent();
+ cal.alarms.setDefaultValues(item);
+ alarm = item.getAlarms()[0];
+ ok(alarm);
+ equal(alarm.related, Ci.calIAlarm.ALARM_RELATED_START);
+ equal(alarm.action, "DISPLAY");
+ equal(alarm.offset.icalString, "-PT20M");
+
+ Services.prefs.setIntPref("calendar.alarms.onforevents", 0);
+ item = new CalEvent();
+ cal.alarms.setDefaultValues(item);
+ equal(item.getAlarms().length, 0);
+
+ let mockCalendar = {
+ getProperty() {
+ return ["SHOUT"];
+ },
+ };
+
+ Services.prefs.setIntPref("calendar.alarms.onforevents", 1);
+ Services.prefs.setStringPref("calendar.alarms.eventalarmunit", "hours");
+ Services.prefs.setIntPref("calendar.alarms.eventalarmlen", 60);
+ item = new CalEvent();
+ item.calendar = mockCalendar;
+ cal.alarms.setDefaultValues(item);
+ alarm = item.getAlarms()[0];
+ ok(alarm);
+ equal(alarm.related, Ci.calIAlarm.ALARM_RELATED_START);
+ equal(alarm.action, "SHOUT");
+ equal(alarm.offset.icalString, "-P2DT12H");
+
+ Services.prefs.clearUserPref("calendar.alarms.onforevents");
+ Services.prefs.clearUserPref("calendar.alarms.eventalarmunit");
+ Services.prefs.clearUserPref("calendar.alarms.eventalarmlen");
+});
+
+add_task(async function test_setDefaultValues_tasks() {
+ let item, alarm;
+ let calnow = cal.dtz.now;
+ let nowDate = cal.createDateTime("20150815T120000");
+ cal.dtz.now = function () {
+ return nowDate;
+ };
+
+ Services.prefs.setIntPref("calendar.alarms.onfortodos", 1);
+ Services.prefs.setStringPref("calendar.alarms.todoalarmunit", "hours");
+ Services.prefs.setIntPref("calendar.alarms.todoalarmlen", 60);
+ item = new CalTodo();
+ equal(item.entryDate, null);
+ cal.alarms.setDefaultValues(item);
+ alarm = item.getAlarms()[0];
+ ok(alarm);
+ equal(alarm.related, Ci.calIAlarm.ALARM_RELATED_START);
+ equal(alarm.action, "DISPLAY");
+ equal(alarm.offset.icalString, "-P2DT12H");
+ equal(item.entryDate.icalString, nowDate.icalString);
+
+ Services.prefs.setIntPref("calendar.alarms.onfortodos", 1);
+ Services.prefs.setStringPref("calendar.alarms.todoalarmunit", "yards");
+ Services.prefs.setIntPref("calendar.alarms.todoalarmlen", 20);
+ item = new CalTodo();
+ cal.alarms.setDefaultValues(item);
+ alarm = item.getAlarms()[0];
+ ok(alarm);
+ equal(alarm.related, Ci.calIAlarm.ALARM_RELATED_START);
+ equal(alarm.action, "DISPLAY");
+ equal(alarm.offset.icalString, "-PT20M");
+
+ Services.prefs.setIntPref("calendar.alarms.onfortodos", 0);
+ item = new CalTodo();
+ cal.alarms.setDefaultValues(item);
+ equal(item.getAlarms().length, 0);
+
+ let mockCalendar = {
+ getProperty() {
+ return ["SHOUT"];
+ },
+ };
+
+ Services.prefs.setIntPref("calendar.alarms.onfortodos", 1);
+ Services.prefs.setStringPref("calendar.alarms.todoalarmunit", "hours");
+ Services.prefs.setIntPref("calendar.alarms.todoalarmlen", 60);
+ item = new CalTodo();
+ item.calendar = mockCalendar;
+ cal.alarms.setDefaultValues(item);
+ alarm = item.getAlarms()[0];
+ ok(alarm);
+ equal(alarm.related, Ci.calIAlarm.ALARM_RELATED_START);
+ equal(alarm.action, "SHOUT");
+ equal(alarm.offset.icalString, "-P2DT12H");
+
+ Services.prefs.clearUserPref("calendar.alarms.onfortodos");
+ Services.prefs.clearUserPref("calendar.alarms.todoalarmunit");
+ Services.prefs.clearUserPref("calendar.alarms.todoalarmlen");
+ cal.dtz.now = calnow;
+});
+
+add_task(async function test_calculateAlarmDate() {
+ let item = new CalEvent();
+ item.startDate = cal.createDateTime("20150815T120000");
+ item.endDate = cal.createDateTime("20150815T130000");
+
+ let calculateAlarmDate = cal.alarms.calculateAlarmDate.bind(cal.alarms, item);
+
+ let alarm = new CalAlarm();
+ alarm.related = Ci.calIAlarm.ALARM_RELATED_ABSOLUTE;
+ alarm.alarmDate = cal.createDateTime("20150815T110000");
+ equal(calculateAlarmDate(alarm).icalString, "20150815T110000");
+
+ alarm = new CalAlarm();
+ alarm.related = Ci.calIAlarm.ALARM_RELATED_START;
+ alarm.offset = cal.createDuration("-PT1H");
+ equal(calculateAlarmDate(alarm).icalString, "20150815T110000Z");
+
+ alarm = new CalAlarm();
+ alarm.related = Ci.calIAlarm.ALARM_RELATED_END;
+ alarm.offset = cal.createDuration("-PT2H");
+ equal(calculateAlarmDate(alarm).icalString, "20150815T110000Z");
+
+ item.startDate.isDate = true;
+ alarm = new CalAlarm();
+ alarm.related = Ci.calIAlarm.ALARM_RELATED_START;
+ alarm.offset = cal.createDuration("-PT1H");
+ equal(calculateAlarmDate(alarm).icalString, "20150814T230000Z");
+ item.startDate.isDate = false;
+
+ item.endDate.isDate = true;
+ alarm = new CalAlarm();
+ alarm.related = Ci.calIAlarm.ALARM_RELATED_END;
+ alarm.offset = cal.createDuration("-PT2H");
+ equal(calculateAlarmDate(alarm).icalString, "20150814T220000Z");
+ item.endDate.isDate = false;
+
+ alarm = new CalAlarm();
+ alarm.related = Ci.calIAlarm.ALARM_RELATED_END;
+ equal(calculateAlarmDate(alarm), null);
+});