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

108 lines
2.3 KiB
JavaScript

describe('addEventSource', function() {
var options;
var eventArray = [
{ id: 0, title: 'event zero', start: '2014-06-24', className: 'event-zero' },
{ id: 1, title: 'event one', start: '2014-06-24', className: 'event-non-zero event-one' },
{ id: 2, title: 'event two', start: '2014-06-24', className: 'event-non-zero event-two' }
];
beforeEach(function() {
affix('#cal');
options = {
defaultDate: '2014-06-24',
defaultView: 'month'
};
});
it('correctly adds an array source', function(done) {
go(
function() {
$('#cal').fullCalendar('addEventSource', eventArray);
},
null,
done
);
});
it('correctly adds a function source', function(done) {
go(
function() {
$('#cal').fullCalendar('addEventSource', function(start, end, timezone, callback) {
callback(eventArray);
});
},
null,
done
);
});
it('correctly adds an extended array source', function(done) {
go(
function() {
$('#cal').fullCalendar('addEventSource', {
className: 'arraysource',
events: eventArray
});
},
function() {
expect($('.arraysource').length).toEqual(3);
},
done
);
});
it('correctly adds an extended array source', function(done) {
go(
function() {
$('#cal').fullCalendar('addEventSource', {
className: 'funcsource',
events: function(start, end, timezone, callback) {
callback(eventArray);
}
});
},
function() {
expect($('.funcsource').length).toEqual(3);
},
done
);
});
function go(addFunc, extraTestFunc, doneFunc) {
var callCnt = 0;
options.eventAfterAllRender = function() {
callCnt++;
if (callCnt == 2) { // once for initial render. second time for addEventSource
called = true;
checkAllEvents();
if (extraTestFunc) {
extraTestFunc();
}
// move the calendar back out of view, then back in (for issue 2191)
$('#cal').fullCalendar('next');
$('#cal').fullCalendar('prev');
checkAllEvents();
if (extraTestFunc) {
extraTestFunc();
}
doneFunc();
}
};
$('#cal').fullCalendar(options);
addFunc();
}
// Checks to make sure all events have been rendered and that the calendar
// has internal info on all the events.
function checkAllEvents() {
expect($('#cal').fullCalendar('clientEvents').length).toEqual(3);
expect($('.fc-event').length).toEqual(3);
}
});