Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
130 lines
3.5 KiB
JavaScript
Executable file
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'
|
|
);
|
|
}
|
|
});
|