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.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
241
gaia/apps/calendar/test/marionette/server_test.js
Executable file
241
gaia/apps/calendar/test/marionette/server_test.js
Executable file
|
|
@ -0,0 +1,241 @@
|
|||
/* global require, marionette, setup, suite, teardown, test */
|
||||
'use strict';
|
||||
|
||||
var Calendar = require('./lib/calendar'),
|
||||
Radicale = require('./lib/radicale'),
|
||||
assert = require('chai').assert,
|
||||
debug = require('common/debug')('marionette:server_test');
|
||||
|
||||
var calendarName = 'firefox-os';
|
||||
|
||||
marionette('interop basic', function() {
|
||||
var app, server;
|
||||
var client = marionette.client({
|
||||
desiredCapabilities: { raisesAccessibilityExceptions: false }
|
||||
});
|
||||
|
||||
var vanillaEvent = Object.freeze({
|
||||
title: 'Vanilla event',
|
||||
location: 'Baskin Robbins',
|
||||
description: 'What better a place for a vanilla event!',
|
||||
calendar: calendarName,
|
||||
startHour: 17,
|
||||
reminders: []
|
||||
});
|
||||
|
||||
var allDayEvent = Object.freeze({
|
||||
title: 'All day event',
|
||||
location: 'Planet Earth',
|
||||
description: 'Except for the mars rover!',
|
||||
calendar: calendarName,
|
||||
allDay: true,
|
||||
reminders: []
|
||||
});
|
||||
|
||||
var eventWithAlarms = Object.freeze({
|
||||
title: 'Event with alarms',
|
||||
location: 'Fire Station',
|
||||
description: 'Wee-Woo-Wee-Woo-Wee-Woo',
|
||||
calendar: calendarName,
|
||||
startHour: 10,
|
||||
reminders: ['5 minutes before', '1 hour before']
|
||||
});
|
||||
|
||||
var vanillaElement, allDayElement, elementWithAlarms;
|
||||
|
||||
function onServerUp(callback) {
|
||||
debug('Launch calendar.');
|
||||
app = new Calendar(client);
|
||||
app.launch();
|
||||
|
||||
app.setupAccount({
|
||||
accountType: 'caldav',
|
||||
user: calendarName,
|
||||
fullUrl: 'http://127.0.0.1:' + server.port + '/' + calendarName
|
||||
});
|
||||
|
||||
app.monthDay.events.forEach(function(event) {
|
||||
switch (event.title.trim()) {
|
||||
case vanillaEvent.title:
|
||||
vanillaElement = event;
|
||||
break;
|
||||
case allDayEvent.title:
|
||||
allDayElement = event;
|
||||
break;
|
||||
case eventWithAlarms.title:
|
||||
elementWithAlarms = event;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
callback();
|
||||
}
|
||||
|
||||
suite('server', function() {
|
||||
setup(function(done) {
|
||||
// Start server if it's not already up.
|
||||
if (server) {
|
||||
return onServerUp(done);
|
||||
}
|
||||
|
||||
server = new Radicale();
|
||||
server.start(function() {
|
||||
onServerUp(done);
|
||||
});
|
||||
});
|
||||
|
||||
teardown(function() {
|
||||
debug('Delete account from calendar app.');
|
||||
app.teardownAccount(calendarName);
|
||||
// Now make sure that the account was actually deleted (see bug 1036753)
|
||||
var synced = getCalendars(app);
|
||||
assert.notInclude(synced, calendarName, 'calendar should be deleted');
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Major hack around suiteSetup not being fully supported
|
||||
* in marionette-js-runner.
|
||||
*/
|
||||
test('suiteSetup', function() {
|
||||
debug('Create test data.');
|
||||
[
|
||||
vanillaEvent,
|
||||
allDayEvent,
|
||||
eventWithAlarms
|
||||
].forEach(function(event) {
|
||||
app.createEvent(event);
|
||||
});
|
||||
|
||||
debug('Sync created data.');
|
||||
app.sync();
|
||||
});
|
||||
|
||||
|
||||
test('should get calendar', function() {
|
||||
var synced = getCalendars(app);
|
||||
assert.include(synced, calendarName, calendarName + ' should be synced');
|
||||
});
|
||||
|
||||
test('should get existing events', function() {
|
||||
var events = app.monthDay.events;
|
||||
[
|
||||
vanillaEvent,
|
||||
allDayEvent,
|
||||
eventWithAlarms
|
||||
].forEach(function(created) {
|
||||
debug('Looking for event titled ' + created.title + '.');
|
||||
assert.ok(
|
||||
events.some(function(event) {
|
||||
app.monthDay.scrollToEvent(event);
|
||||
debug('Found ' + event.title.trim());
|
||||
return event.title.trim() === created.title;
|
||||
})
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// TODO(gareth): Fix me!
|
||||
test.skip('event start times', function() {
|
||||
assert.strictEqual(
|
||||
vanillaElement.closestHour,
|
||||
vanillaEvent.startHour
|
||||
);
|
||||
assert.strictEqual(
|
||||
elementWithAlarms.closestHour,
|
||||
eventWithAlarms.startHour
|
||||
);
|
||||
// Make sure that we are inside an all day element.
|
||||
assert.ok(
|
||||
!!allDayElement.closestAllDay,
|
||||
'should recognize all day events'
|
||||
);
|
||||
});
|
||||
|
||||
// TODO(gareth): Fix me!
|
||||
test.skip('event descriptions', function() {
|
||||
[
|
||||
{ element: vanillaElement, event: vanillaEvent },
|
||||
{ element: allDayElement, event: allDayEvent },
|
||||
{ element: elementWithAlarms, event: eventWithAlarms }
|
||||
].forEach(function(obj) {
|
||||
var element = obj.element,
|
||||
event = obj.event;
|
||||
app.monthDay.scrollToEvent(element);
|
||||
element.click();
|
||||
app.readEvent.waitForDisplay();
|
||||
assert.strictEqual(
|
||||
app.readEvent.description.trim(),
|
||||
event.description
|
||||
);
|
||||
|
||||
app.readEvent.cancel();
|
||||
app.month.waitForDisplay();
|
||||
});
|
||||
});
|
||||
|
||||
test('event locations', function() {
|
||||
assert.strictEqual(
|
||||
vanillaElement.address.trim(),
|
||||
vanillaEvent.location
|
||||
);
|
||||
assert.strictEqual(
|
||||
allDayElement.address.trim(),
|
||||
allDayEvent.location
|
||||
);
|
||||
assert.strictEqual(
|
||||
elementWithAlarms.address.trim(),
|
||||
eventWithAlarms.location
|
||||
);
|
||||
});
|
||||
|
||||
test('event alarms', function() {
|
||||
assert.isFalse(vanillaElement.hasAlarms());
|
||||
assert.isFalse(allDayElement.hasAlarms());
|
||||
assert.isTrue(elementWithAlarms.hasAlarms());
|
||||
});
|
||||
|
||||
test('suiteTeardown', function(done) {
|
||||
// TODO(gareth): Should be able to delete test data
|
||||
// from within calendar app.
|
||||
debug('Delete test data.');
|
||||
/*
|
||||
var events = app.monthDay.events;
|
||||
events.forEach(function(event) {
|
||||
app.monthDay.scrollToEvent(event);
|
||||
event.click();
|
||||
app.readEvent.waitForDisplay();
|
||||
if (app.readEvent.editable) {
|
||||
app.readEvent.edit();
|
||||
app.editEvent.waitForDisplay();
|
||||
app.editEvent.delete();
|
||||
} else {
|
||||
app.readEvent.cancel();
|
||||
}
|
||||
|
||||
app.monthDay.waitForDisplay();
|
||||
});
|
||||
|
||||
debug('Sync deletions.');
|
||||
app.sync();
|
||||
*/
|
||||
try {
|
||||
server.removeAllEvents();
|
||||
} catch (error) {
|
||||
console.error(error.toString());
|
||||
} finally {
|
||||
server.close(done);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function getCalendars(app) {
|
||||
debug('Reading list of calendars from settings view.');
|
||||
app.openSettingsView();
|
||||
var synced = app.settings.calendars();
|
||||
app.closeSettingsView();
|
||||
return synced;
|
||||
}
|
||||
Loading…
Reference in a new issue