VulpesOS/gaia/apps/clock/test/unit/alarm_test.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

102 lines
2.9 KiB
JavaScript
Executable file

'use strict';
/* global MockIntlHelper */
suite('Alarm Test', function() {
var Alarm;
var activeAlarm;
var alarmDatabase;
suiteSetup(function(done) {
window.IntlHelper = MockIntlHelper;
require(['alarm', 'alarm_database', 'panels/alarm/active_alarm'],
function(alarm, alarm_database, ActiveAlarm) {
Alarm = alarm;
activeAlarm = new ActiveAlarm();
alarmDatabase = alarm_database;
done();
}
);
});
suite('Date handling', function() {
//var now = new Date(1398387324081); // thursday
var now = new Date(Date.UTC(2014, 3, 24)); // thursday
setup(function() {
this.alarm = new Alarm({
hour: 4,
minute: 20,
repeat: {
monday: true, wednesday: true, friday: true
}
});
});
test('basic properties and serialization', function() {
assert.deepEqual(this.alarm.toJSON(), {
id: null,
registeredAlarms: {},
repeat: { monday: true, wednesday: true, friday: true },
hour: 4,
minute: 20,
label: '',
sound: 'ac_awake.opus',
vibrate: true,
snooze: 10
});
});
// Bug 1146263
test.skip('alarm is enabled when snoozed', function(done) {
this.alarm.schedule('snooze').then(function() {
assert.ok(this.alarm.isEnabled());
done();
}.bind(this));
});
// Bug 1146263
test.skip('schedule saves alarm', function(done) {
var spy = sinon.spy(alarmDatabase, 'put');
this.alarm.schedule('normal').then(function() {
spy.restore();
assert.ok(spy.called);
done();
});
});
// Bug 1146263
test.skip('cancel saves alarm', function(done) {
var spy = sinon.spy(alarmDatabase, 'put');
this.alarm.cancel().then(function() {
spy.restore();
assert.ok(spy.called);
done();
});
});
test('getNextAlarmFireTime', function() {
// Today is thursday; the alarm fires first on Friday:
var when = this.alarm.getNextAlarmFireTime(now);
assert.equal(when.getDay(), 5); // Friday
// After Friday, it should fire on Monday at the same time:
var secondAlarm = this.alarm.getNextAlarmFireTime(when);
assert.equal(secondAlarm.getHours(), when.getHours()); // at the same time
assert.equal(secondAlarm.getMinutes(), when.getMinutes());
assert.equal(secondAlarm.getDay(), 1); // on Monday
// And again on Wednesday
var thirdAlarm = this.alarm.getNextAlarmFireTime(secondAlarm);
assert.equal(thirdAlarm.getHours(), secondAlarm.getHours());
assert.equal(thirdAlarm.getMinutes(), secondAlarm.getMinutes());
assert.equal(thirdAlarm.getDay(), 3); // on Wednesday
});
test('getNextSnoozeFireTime', function() {
assert.equal(this.alarm.getNextSnoozeFireTime(now).getTime(),
now.getTime() + (10 * 60 * 1000));
});
});
});