gecko-dev/dom/alarm/test/test_alarm_change_system_cl...

71 строка
2.0 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
Components.utils.import("resource://gre/modules/AlarmService.jsm");
Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "gTimeService",
"@mozilla.org/time/timeservice;1",
"nsITimeService");
const ALARM_OFFSET = 10000; // 10 seconds.
const CLOCK_OFFSET = 20000; // 20 seconds.
const MANIFEST_URL = "http://dummyurl.com/manifest.webapp";
var alarmDate;
var alarmFired;
function alarmCb() {
alarmFired = true;
};
function run_test() {
do_get_profile();
Services.prefs.setBoolPref("dom.mozAlarms.enabled", true);
run_next_test();
}
/* Tests */
add_test(function test_getAll() {
do_print("= There should not be any alarm =");
AlarmService._db.getAll(MANIFEST_URL, (aAlarms) => {
do_check_eq(aAlarms.length, 0);
run_next_test();
});
});
add_test(function test_addAlarm() {
do_print("= Set alarm =");
alarmDate = Date.now() + ALARM_OFFSET;
AlarmService.add({
date: alarmDate,
manifestURL: MANIFEST_URL
}, alarmCb, run_next_test, do_throw);
});
add_test(function test_alarmNotFired() {
do_print("= The alarm should be in the DB and pending =");
AlarmService._db.getAll(MANIFEST_URL, aAlarms => {
do_check_eq(aAlarms.length, 1, "The alarm is in the DB");
run_next_test();
});
});
add_test(function test_changeSystemClock() {
do_print("= Change system clock =");
gTimeService.set(Date.now() + CLOCK_OFFSET);
run_next_test();
});
add_test(function test_alarmFired() {
do_print("= The alarm should have been fired and removed from the DB =");
do_check_true(alarmFired, "The alarm was fired");
AlarmService._db.getAll(MANIFEST_URL, aAlarms => {
do_check_eq(aAlarms.length, 0, "No alarms in the DB");
run_next_test();
});
});