Files
fullcalendar/tests/automated/current-date.js
T
2014-07-25 16:23:04 +01:00

291 lines
8.9 KiB
JavaScript

describe('current date', function() {
var TITLE_FORMAT = 'MMMM D YYYY';
var options;
beforeEach(function() {
affix('#cal');
options = {
titleFormat: TITLE_FORMAT,
defaultDate: '2014-06-01'
};
});
describe('defaultDate & getDate', function() {
describeWhenInMonth(function() {
it('should initialize at the date', function() {
options.defaultDate = '2011-03-10';
$('#cal').fullCalendar(options);
expectViewDates('2011-02-27', '2011-04-10', '2011-03-01');
var currentDate = $('#cal').fullCalendar('getDate');
expect(moment.isMoment(currentDate)).toEqual(true); // test the type, but only here
expect(currentDate).toEqualMoment('2011-03-10');
});
});
describeWhenInWeek(function() {
it('should initialize at the date, given a date string', function() {
options.defaultDate = '2011-03-10';
$('#cal').fullCalendar(options);
expectViewDates('2011-03-06', '2011-03-13');
expect($('#cal').fullCalendar('getDate')).toEqualMoment('2011-03-10');
});
it('should initialize at the date, given a Moment object', function() {
options.defaultDate = $.fullCalendar.moment('2011-03-10');
$('#cal').fullCalendar(options);
expectViewDates('2011-03-06', '2011-03-13');
expect($('#cal').fullCalendar('getDate')).toEqualMoment('2011-03-10');
});
});
describeWhenInDay(function() {
it('should initialize at the date', function() {
options.defaultDate = '2011-03-10';
$('#cal').fullCalendar(options);
expectViewDates('2011-03-10');
expect($('#cal').fullCalendar('getDate')).toEqualMoment('2011-03-10');
});
});
});
describe('gotoDate', function() {
describeWhenInMonth(function() {
it('should go to a date when given a date string', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('gotoDate', '2015-04-01');
expectViewDates('2015-03-29', '2015-05-10', '2015-04-01');
});
});
describeWhenInWeek(function() {
it('should go to a date when given a date string', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('gotoDate', '2015-04-01');
expectViewDates('2015-03-29', '2015-04-05');
});
it('should go to a date when given a date string with a time', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('gotoDate', '2015-04-01T12:00:00');
expectViewDates('2015-03-29', '2015-04-05');
});
it('should go to a date when given a moment object', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('gotoDate', $.fullCalendar.moment('2015-04-01'));
expectViewDates('2015-03-29', '2015-04-05');
});
});
describeWhenInDay(function() {
it('should go to a date when given a date string', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('gotoDate', '2015-04-01');
expectViewDates('2015-04-01');
});
});
});
describe('incrementDate', function() {
describeWhenInMonth(function() {
it('should increment the date when given a Duration object', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('incrementDate', { months: -1 });
expectViewDates('2014-04-27', '2014-06-08', '2014-05-01');
});
});
describeWhenInWeek(function() {
it('should increment the date when given a Duration object', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('incrementDate', { weeks: -2 });
expectViewDates('2014-05-18', '2014-05-25');
});
});
describeWhenInDay(function() {
it('should increment the date when given a Duration object', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('incrementDate', { days: 2 });
expectViewDates('2014-06-03');
});
it('should increment the date when given a Duration string', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('incrementDate', '2.00:00:00');
expectViewDates('2014-06-03');
});
it('should increment the date when given a Duration string with a time', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('incrementDate', '2.05:30:00');
expectViewDates('2014-06-03');
});
});
});
describe('prev', function() {
describeWhenInMonth(function() {
it('should move the calendar back a month', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('prev');
expectViewDates('2014-04-27', '2014-06-08', '2014-05-01');
});
});
describeWhenInWeek(function() {
it('should move the calendar back a week', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('prev');
expectViewDates('2014-05-25', '2014-06-01');
});
});
describeWhenInDay(function() {
it('should move the calendar back a week', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('prev');
expectViewDates('2014-05-31');
});
});
});
describe('next', function() {
describeWhenInMonth(function() {
it('should move the calendar forward a month', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('next');
expectViewDates('2014-06-29', '2014-08-10', '2014-07-01');
});
});
describeWhenInWeek(function() {
it('should move the calendar forward a week', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('next');
expectViewDates('2014-06-08', '2014-06-15');
});
});
describeWhenInDay(function() {
it('should move the calendar forward a week', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('next');
expectViewDates('2014-06-02');
});
});
});
describe('prevYear', function() {
describeWhenInMonth(function() {
it('should move the calendar back a year', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('prevYear');
expectViewDates('2013-05-26', '2013-07-07', '2013-06-01');
});
});
describeWhenInWeek(function() {
it('should move the calendar back a year', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('prevYear');
expectViewDates('2013-05-26', '2013-06-02');
});
});
describeWhenInDay(function() {
it('should move the calendar back a year', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('prevYear');
expectViewDates('2013-06-01');
});
});
});
describe('nextYear', function() {
describeWhenInMonth(function() {
it('should move the calendar forward a year', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('nextYear');
expectViewDates('2015-05-31', '2015-07-12', '2015-06-01');
});
});
describeWhenInWeek(function() {
it('should move the calendar forward a year', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('nextYear');
expectViewDates('2015-05-31', '2015-06-07');
});
});
describeWhenInDay(function() {
it('should move the calendar forward a year', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('nextYear');
expectViewDates('2015-06-01');
});
});
});
describe('today', function() {
beforeEach(function() {
options.now = '2016-03-15'; // the "today" date
});
describeWhenInMonth(function() {
it('should move the calendar to now', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('today');
expectViewDates('2016-02-28', '2016-04-10', '2016-03-01');
});
});
describeWhenInWeek(function() {
it('should move the calendar to now', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('today');
expectViewDates('2016-03-13', '2016-03-20');
});
});
describeWhenInDay(function() {
it('should move the calendar to now', function() {
$('#cal').fullCalendar(options);
$('#cal').fullCalendar('today');
expectViewDates('2016-03-15');
});
});
});
// UTILS
// -----
function describeWhenInMonth(func) {
describeWhenIn('month', func);
}
function describeWhenInWeek(func) {
describeWhenIn('basicWeek', func);
describeWhenIn('agendaWeek', func);
}
function describeWhenInDay(func) {
describeWhenIn('basicDay', func);
describeWhenIn('agendaDay', func);
}
function describeWhenIn(viewName, func) {
describe('when in ' + viewName, function() {
beforeEach(function() {
options.defaultView = viewName;
});
func();
});
}
function expectViewDates(start, end, titleDate) {
var view = $('#cal').fullCalendar('getView');
var calculatedEnd;
var title;
start = $.fullCalendar.moment(start);
calculatedEnd = end ? $.fullCalendar.moment(end) : start.clone().add('days', 1);
expect(start).toEqualMoment(view.start);
expect(calculatedEnd).toEqualMoment(view.end);
if (titleDate || !end) {
title = $.fullCalendar.moment(titleDate || start).format(TITLE_FORMAT);
}
else {
title = $.fullCalendar.formatRange(
start,
calculatedEnd.clone().add('ms', -1),
TITLE_FORMAT
);
}
expect($('.fc-header-title h2')).toContainText(title);
}
});