addEventSource.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. describe('addEventSource', function() {
  2. var options;
  3. var eventArray = [
  4. { id: 0, title: 'event zero', start: '2014-06-24', className: 'event-zero' },
  5. { id: 1, title: 'event one', start: '2014-06-24', className: 'event-non-zero event-one' },
  6. { id: 2, title: 'event two', start: '2014-06-24', className: 'event-non-zero event-two' }
  7. ];
  8. beforeEach(function() {
  9. affix('#cal');
  10. options = {
  11. defaultDate: '2014-06-24',
  12. defaultView: 'month'
  13. };
  14. });
  15. it('correctly adds an array source', function(done) {
  16. go(
  17. function() {
  18. $('#cal').fullCalendar('addEventSource', eventArray);
  19. },
  20. null,
  21. done
  22. );
  23. });
  24. it('correctly adds a function source', function(done) {
  25. go(
  26. function() {
  27. $('#cal').fullCalendar('addEventSource', function(start, end, timezone, callback) {
  28. callback(eventArray);
  29. });
  30. },
  31. null,
  32. done
  33. );
  34. });
  35. it('correctly adds an extended array source', function(done) {
  36. go(
  37. function() {
  38. $('#cal').fullCalendar('addEventSource', {
  39. className: 'arraysource',
  40. events: eventArray
  41. });
  42. },
  43. function() {
  44. expect($('.arraysource').length).toEqual(3);
  45. },
  46. done
  47. );
  48. });
  49. it('correctly adds an extended array source', function(done) {
  50. go(
  51. function() {
  52. $('#cal').fullCalendar('addEventSource', {
  53. className: 'funcsource',
  54. events: function(start, end, timezone, callback) {
  55. callback(eventArray);
  56. }
  57. });
  58. },
  59. function() {
  60. expect($('.funcsource').length).toEqual(3);
  61. },
  62. done
  63. );
  64. });
  65. function go(addFunc, extraTestFunc, doneFunc) {
  66. var callCnt = 0;
  67. options.eventAfterAllRender = function() {
  68. callCnt++;
  69. if (callCnt == 2) { // once for initial render. second time for addEventSource
  70. called = true;
  71. checkAllEvents();
  72. if (extraTestFunc) {
  73. extraTestFunc();
  74. }
  75. // move the calendar back out of view, then back in (for issue 2191)
  76. $('#cal').fullCalendar('next');
  77. $('#cal').fullCalendar('prev');
  78. // otherwise, prev/next would be cancelled out by doneFunc's calendar destroy
  79. setTimeout(function() {
  80. checkAllEvents();
  81. if (extraTestFunc) {
  82. extraTestFunc();
  83. }
  84. doneFunc();
  85. }, 0)
  86. }
  87. };
  88. $('#cal').fullCalendar(options);
  89. addFunc();
  90. }
  91. // Checks to make sure all events have been rendered and that the calendar
  92. // has internal info on all the events.
  93. function checkAllEvents() {
  94. expect($('#cal').fullCalendar('clientEvents').length).toEqual(3);
  95. expect($('.fc-event').length).toEqual(3);
  96. }
  97. });