Skip to content

Commit

Permalink
tests and tweaks for eventRenderWait
Browse files Browse the repository at this point in the history
  • Loading branch information
arshaw committed Dec 5, 2016
1 parent 358c17e commit 3c12c1d
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 2 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Expand Up @@ -2,7 +2,8 @@
v3.1.0 (2016-12-05)
-------------------

- `eventRenderWait` for implicit batch event rerendering, for performance (#2938)
- experimental support for implicitly batched ("debounced") event rendering (#2938)
- `eventRenderWait` (off by default)
- new `footer` option, similar to header toolbar (#654, #3299)
- event rendering batch methods (#3351):
- `renderEvents`
Expand Down
2 changes: 1 addition & 1 deletion src/common/View.js
Expand Up @@ -895,7 +895,7 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {
requestEventsRender: function(events) {
var _this = this;

return this.eventRenderQueue.add(function() {
return this.eventRenderQueue.add(function() { // might not return a promise if debounced!? bad
return _this.executeEventsRender(events);
});
},
Expand Down
57 changes: 57 additions & 0 deletions tests/automated/eventRenderWait.js
@@ -0,0 +1,57 @@
describe('eventRenderWait', function() {

it('batches together many event renders', function(done) {
var eventSource1 = [
{ title: 'event1', start: '2016-12-04T01:00:00', className: 'event1' },
{ title: 'event2', start: '2016-12-04T02:00:00', className: 'event2' }
];
var eventSource2 = [
{ title: 'event3', start: '2016-12-04T03:00:00', className: 'event3' },
{ title: 'event4', start: '2016-12-04T04:00:00', className: 'event4' }
];
var extraEvent1 = { title: 'event5', start: '2016-12-04T05:00:00', className: 'event5', id: '5' };
var extraEvent2 = { title: 'event6', start: '2016-12-04T06:00:00', className: 'event6', id: '6' };
var eventRenderCnt = 0;

affix('#cal');
$('#cal').fullCalendar({
defaultDate: '2016-12-04',
defaultView: 'agendaDay',
events: eventSource1,
eventRenderWait: 0, // will still debounce despite being zero
eventAfterAllRender: function() {
eventRenderCnt++;
if (eventRenderCnt === 1) {

expect($('.event1').length).toBe(1);
expect($('.event2').length).toBe(1);
expect($('.event3').length).toBe(1);
expect($('.event4').length).toBe(1);
expect($('.event5').length).toBe(1);
expect($('.event6').length).toBe(0); // got removed

// make sure doesn't fire again
setTimeout(function() {
expect(eventRenderCnt).toBe(1);
done();
}, 1000);
}
}
});

var calendar = $('#cal').fullCalendar('getCalendar');
expect($('.fc-event').length).toBe(0);

calendar.addEventSource(eventSource2);
expect($('.fc-event').length).toBe(0);

calendar.renderEvent(extraEvent1);
expect($('.fc-event').length).toBe(0);

calendar.renderEvent(extraEvent2);
expect($('.fc-event').length).toBe(0);

calendar.removeEvents(extraEvent2.id); // only works with id!?
expect($('.fc-event').length).toBe(0);
});
});

0 comments on commit 3c12c1d

Please sign in to comment.