events-function.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. describe('events as a function', function() {
  2. var options;
  3. beforeEach(function() {
  4. affix('#cal');
  5. options = {
  6. defaultView: 'month',
  7. defaultDate: '2014-05-01'
  8. };
  9. });
  10. it('requests correctly when no timezone', function(done) {
  11. options.events = function(start, end, timezone, callback) {
  12. expect(moment.isMoment(start)).toEqual(true);
  13. expect(start.hasTime()).toEqual(false);
  14. expect(start.hasZone()).toEqual(false);
  15. expect(start.format()).toEqual('2014-04-27');
  16. expect(moment.isMoment(end)).toEqual(true);
  17. expect(end.hasTime()).toEqual(false);
  18. expect(end.hasZone()).toEqual(false);
  19. expect(end.format()).toEqual('2014-06-08');
  20. expect(timezone).toEqual(false);
  21. expect(typeof callback).toEqual('function');
  22. callback([]);
  23. done();
  24. };
  25. $('#cal').fullCalendar(options);
  26. });
  27. it('requests correctly when local timezone', function(done) {
  28. options.timezone = 'local';
  29. options.events = function(start, end, timezone, callback) {
  30. expect(moment.isMoment(start)).toEqual(true);
  31. expect(start.hasTime()).toEqual(false);
  32. expect(start.hasZone()).toEqual(false);
  33. expect(start.format()).toEqual('2014-04-27');
  34. expect(moment.isMoment(end)).toEqual(true);
  35. expect(end.hasTime()).toEqual(false);
  36. expect(end.hasZone()).toEqual(false);
  37. expect(end.format()).toEqual('2014-06-08');
  38. expect(timezone).toEqual('local');
  39. expect(typeof callback).toEqual('function');
  40. callback([]);
  41. done();
  42. };
  43. $('#cal').fullCalendar(options);
  44. });
  45. it('requests correctly when UTC timezone', function(done) {
  46. options.timezone = 'UTC';
  47. options.events = function(start, end, timezone, callback) {
  48. expect(moment.isMoment(start)).toEqual(true);
  49. expect(start.hasTime()).toEqual(false);
  50. expect(start.hasZone()).toEqual(false);
  51. expect(start.format()).toEqual('2014-04-27');
  52. expect(moment.isMoment(end)).toEqual(true);
  53. expect(end.hasTime()).toEqual(false);
  54. expect(end.hasZone()).toEqual(false);
  55. expect(end.format()).toEqual('2014-06-08');
  56. expect(timezone).toEqual('UTC');
  57. expect(typeof callback).toEqual('function');
  58. callback([]);
  59. done();
  60. };
  61. $('#cal').fullCalendar(options);
  62. });
  63. it('requests correctly when custom timezone', function(done) {
  64. options.timezone = 'America/Chicago';
  65. options.events = function(start, end, timezone, callback) {
  66. expect(moment.isMoment(start)).toEqual(true);
  67. expect(start.hasTime()).toEqual(false);
  68. expect(start.hasZone()).toEqual(false);
  69. expect(start.format()).toEqual('2014-04-27');
  70. expect(moment.isMoment(end)).toEqual(true);
  71. expect(end.hasTime()).toEqual(false);
  72. expect(end.hasZone()).toEqual(false);
  73. expect(end.format()).toEqual('2014-06-08');
  74. expect(timezone).toEqual('America/Chicago');
  75. expect(typeof callback).toEqual('function');
  76. callback([]);
  77. done();
  78. };
  79. $('#cal').fullCalendar(options);
  80. });
  81. it('requests correctly when timezone changed dynamically', function(done) {
  82. var callCnt = 0;
  83. options.timezone = 'America/Chicago';
  84. options.events = function(start, end, timezone, callback) {
  85. callCnt++;
  86. if (callCnt === 1) {
  87. expect(timezone).toEqual('America/Chicago');
  88. setTimeout(function() {
  89. $('#cal').fullCalendar('option', 'timezone', 'UTC');
  90. }, 0);
  91. }
  92. else if (callCnt === 2) {
  93. expect(timezone).toEqual('UTC');
  94. done();
  95. }
  96. };
  97. $('#cal').fullCalendar(options);
  98. });
  99. it('requests correctly with event source extended form', function(done) {
  100. var eventSource = {
  101. className: 'customeventclass',
  102. events: function(start, end, timezone, callback) {
  103. expect(moment.isMoment(start)).toEqual(true);
  104. expect(start.hasTime()).toEqual(false);
  105. expect(start.hasZone()).toEqual(false);
  106. expect(start.format()).toEqual('2014-04-27');
  107. expect(moment.isMoment(end)).toEqual(true);
  108. expect(end.hasTime()).toEqual(false);
  109. expect(end.hasZone()).toEqual(false);
  110. expect(end.format()).toEqual('2014-06-08');
  111. expect(timezone).toEqual(false);
  112. expect(typeof callback).toEqual('function');
  113. callback([
  114. {
  115. title: 'event1',
  116. start: '2014-05-10'
  117. }
  118. ]);
  119. }
  120. };
  121. spyOn(eventSource, 'events').and.callThrough();
  122. options.eventSources = [ eventSource ];
  123. options.eventRender = function(eventObj, eventElm) {
  124. expect(eventSource.events.calls.count()).toEqual(1);
  125. expect(eventElm).toHaveClass('customeventclass');
  126. done();
  127. };
  128. $('#cal').fullCalendar(options);
  129. });
  130. });