VulpesOS/gaia/apps/calendar/test/marionette/caldav_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

130 lines
3.5 KiB
JavaScript
Executable file

'use strict';
var Calendar = require('./lib/calendar'),
Radicale = require('./lib/radicale'),
assert = require('chai').assert,
dateFormat = require('dateformat');
var ACCOUNT_USERNAME = 'firefox-os',
TITLE = 'Go for a dream',
DATE_PATTERN = 'yyyymmdd"T"HHMMssZ';
marionette('configure CalDAV accounts', function() {
var client = marionette.client({
profile: {
prefs: {
// we need to disable the keyboard to avoid intermittent failures on
// Travis (transitions might take longer to run and block UI)
'dom.mozInputMethod.enabled': false,
// Do not require the B2G-desktop app window to have focus (as per the
// system window manager) in order for it to do focus-related things.
'focusmanager.testmode': true,
}
},
desiredCapabilities: { raisesAccessibilityExceptions: false }
});
var serverHelper = new Radicale(),
app = null;
setup(function(done) {
app = new Calendar(client);
app.launch();
serverHelper.start(function(error, port) {
if (error) {
return done(error);
}
var accountUrl = 'http://localhost:' + port + '/' + ACCOUNT_USERNAME,
startDate = new Date(),
endDate = new Date(),
event = {};
app.setupAccount({
accountType: 'caldav',
user: ACCOUNT_USERNAME,
fullUrl: accountUrl
});
// Make sure we have a event item
// in the top of event-list view in month view.
startDate.setMinutes(0);
endDate.setMinutes(59);
event = {
startDate: dateFormat(startDate, DATE_PATTERN),
endDate: dateFormat(endDate, DATE_PATTERN),
title: TITLE
};
serverHelper.addEvent(ACCOUNT_USERNAME, event);
app.sync();
// Make sure we start the server before the setup is ended.
done();
});
});
teardown(function(done) {
// No matter how, we close the server in the end.
try {
serverHelper.removeAllEvents();
} catch (error) {
console.error(error.message);
} finally {
serverHelper.close(done);
}
});
test('should show a event', function() {
var event = app.monthDay.events[0];
// Scroll so that the first one is in view and click it.
app.monthDay.scrollToEvent(event);
event.click();
assertEvent(ACCOUNT_USERNAME, TITLE);
});
test('events from disabled calendars should not be displayed', function() {
var events = app.monthDay.events;
assert.equal(events.length, 1, 'at least one event');
app.openSettingsView();
app.settings.toggleCalendar(ACCOUNT_USERNAME);
app.closeSettingsView();
assert.deepEqual(app.monthDay.events, [], 'events should be removed');
var startDate = new Date();
var endDate = new Date();
endDate.setHours(endDate.getHours() + 1);
var event = {
startDate: dateFormat(startDate, DATE_PATTERN),
endDate: dateFormat(endDate, DATE_PATTERN),
title: TITLE
};
serverHelper.addEvent(ACCOUNT_USERNAME, event);
app.openSettingsView();
app.settings.sync();
app.closeSettingsView();
assert.deepEqual(app.monthDay.events, [], 'events should not be added');
});
function assertEvent(username, title) {
app.readEvent.waitForDisplay();
assert.deepEqual(
app.readEvent.title,
title,
'event should have correct title'
);
// Make sure the event is created in the CalDAV username.
assert.deepEqual(
app.readEvent.calendar,
username,
'event should be created by the correct user'
);
}
});