events-function.js 3.2 KB

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