diff --git a/tests/automated/dayRender.js b/tests/automated/dayRender.js new file mode 100644 index 0000000..35b4371 --- /dev/null +++ b/tests/automated/dayRender.js @@ -0,0 +1,86 @@ + +describe('dayRender', function() { + + beforeEach(function() { + affix('#cal'); + }); + + it('is triggered upon initialization of a view, with correct parameters', function() { + var options = { + defaultView: 'month', + weekMode: 'fixed', + defaultDate: '2014-05-01', + dayRender: function(date, cell) { + expect(moment.isMoment(date)).toEqual(true); + expect(date.hasTime()).toEqual(false); + expect(date.format()).toEqual(cell.data('date')); + expect(cell).toBeInDOM(); + } + }; + + spyOn(options, 'dayRender').and.callThrough(); + $('#cal').fullCalendar(options); + expect(options.dayRender.calls.count()).toEqual(42); + }); + + it('is called when view is changed', function() { + var options = { + defaultView: 'month', + weekMode: 'fixed', + defaultDate: '2014-05-01', + dayRender: function(date, cell) { } + }; + + spyOn(options, 'dayRender').and.callThrough(); + $('#cal').fullCalendar(options); + options.dayRender.calls.reset(); + $('#cal').fullCalendar('changeView', 'basicWeek'); + expect(options.dayRender.calls.count()).toEqual(7); + }); + + // called if the date is navigated to a different visible range + it('is called when view is changed', function() { + var options = { + defaultView: 'basicWeek', + defaultDate: '2014-05-01', + dayRender: function(date, cell) { } + }; + + spyOn(options, 'dayRender').and.callThrough(); + $('#cal').fullCalendar(options); + options.dayRender.calls.reset(); + $('#cal').fullCalendar('gotoDate', '2014-05-04'); // a day in the next week + expect(options.dayRender.calls.count()).toEqual(7); + }); + + it('won\'t be called when date is navigated but remains in the current visible range', function() { + var options = { + defaultView: 'basicWeek', + defaultDate: '2014-05-01', + dayRender: function(date, cell) { } + }; + + spyOn(options, 'dayRender').and.callThrough(); + $('#cal').fullCalendar(options); + options.dayRender.calls.reset(); + $('#cal').fullCalendar('gotoDate', '2014-05-02'); // a day in the same week + expect(options.dayRender.calls.count()).toEqual(0); + }); + + it('allows you to modify the element', function() { + var options = { + defaultView: 'month', + weekMode: 'fixed', + defaultDate: '2014-05-01', + dayRender: function(date, cell) { + if (date.isSame('2014-05-01')) { + cell.addClass('mycustomclass'); + } + } + }; + + $('#cal').fullCalendar(options); + expect($('#cal td[data-date="2014-05-01"]')).toHaveClass('mycustomclass'); + }); + +}); \ No newline at end of file