VulpesOS/gaia/apps/calendar/test/unit/models/calendar_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

120 lines
2.6 KiB
JavaScript
Executable file

define(function(require) {
'use strict';
var Calendar = require('models/calendar');
suite('Models.Calendar', function() {
var subject;
var remoteCalendar;
var CalendarModel;
suiteSetup(function() {
CalendarModel = Calendar;
});
setup(function() {
remoteCalendar = {
id: 'one',
syncToken: 'xxx'
};
subject = new Calendar({
name: 'foo',
remote: remoteCalendar
});
});
suite('initialization', function() {
test('when given a remote', function() {
var date = new Date();
subject = new CalendarModel({
remote: remoteCalendar,
lastEventSyncToken: '0',
lastEventSyncDate: date
});
assert.deepEqual(
subject.remote,
remoteCalendar
);
assert.equal(subject.lastEventSyncDate, date);
});
test('when given remote', function() {
subject = new CalendarModel({
remote: remoteCalendar
});
assert.deepEqual(subject.remote, remoteCalendar);
});
});
test('#updateRemote', function() {
remoteCalendar.id = 'foo';
subject.updateRemote(remoteCalendar);
assert.equal(subject.remote.id, 'foo');
});
suite('#eventSyncNeeded', function() {
test('when remote and local match', function() {
subject.remote.syncToken = 'foo';
subject.lastEventSyncToken = 'foo';
assert.isFalse(subject.eventSyncNeeded());
});
test('when remote and local differ', function() {
subject.remote.syncToken = 'foo';
subject.lastEventSyncToken = 'bar';
assert.isTrue(subject.eventSyncNeeded());
});
});
test('#toJSON', function() {
subject._id = '1';
var expected = {
error: undefined,
lastEventSyncToken: subject.lastEventSyncToken,
lastEventSyncDate: subject.lastEventSyncDate,
localDisplayed: subject.localDisplayed,
firstEventSyncDate: subject.firstEventSyncDate,
accountId: subject.accountId,
_id: subject._id,
remote: subject.remote
};
assert.deepEqual(subject.toJSON(), expected);
});
test('#name', function() {
subject.remote.name = 'foo';
assert.equal(subject.name, 'foo');
});
suite('#color', function() {
test('basic getter', function() {
subject.remote.color = '#ccc';
assert.equal(subject.color, '#ccc');
});
test('filter hex value', function() {
subject.remote.color = '#7BD148FF';
assert.equal(subject.color, '#7BD148');
});
});
test('#description', function() {
subject.remote.description = 'foo';
assert.equal(subject.description, 'foo');
});
});
});