import { createPlugin } from '@fullcalendar/core' import { sliceEvents } from '@fullcalendar/core' import { CalendarWrapper } from '../lib/wrappers/CalendarWrapper.js' describe('custom view class', () => { // TODO: rename file it('calls all standard methods with correct parameters', () => { const CustomViewConfig = { classNames: 'awesome-view', didMount() {}, willUnmount() {}, content(props) { expect(props.dateProfile.activeRange.start instanceof Date).toBe(true) expect(props.dateProfile.activeRange.end instanceof Date).toBe(true) let eventRanges = sliceEvents(props, true) // allDay=true expect(Array.isArray(eventRanges)).toBe(true) expect(eventRanges.length).toBe(1) expect(typeof eventRanges[0].def).toBe('object') expect(typeof eventRanges[0].ui).toBe('object') expect(typeof eventRanges[0].instance).toBe('object') expect(eventRanges[0].isStart).toBe(true) expect(eventRanges[0].isEnd).toBe(true) expect(eventRanges[0].range.start instanceof Date).toBe(true) expect(eventRanges[0].range.end instanceof Date).toBe(true) let dateSelection = props.dateSelection if (!dateSelection) { expect(dateSelection).toBe(null) } else { expect(typeof dateSelection).toBe('object') expect(dateSelection.allDay).toBe(true) expect(dateSelection.range.start instanceof Date).toBe(true) expect(dateSelection.range.end instanceof Date).toBe(true) } return { html: '
hello world
' } }, } spyOn(CustomViewConfig, 'didMount').and.callThrough() spyOn(CustomViewConfig, 'content').and.callThrough() spyOn(CustomViewConfig, 'willUnmount').and.callThrough() function resetCounts() { CustomViewConfig.didMount.calls.reset() CustomViewConfig.content.calls.reset() CustomViewConfig.willUnmount.calls.reset() } let calendar = initCalendar({ plugins: [ createPlugin({ name: 'test-plugin', views: { custom: CustomViewConfig, }, }), ], initialView: 'custom', initialDate: '2014-12-25', // will end up being a single-day view events: [ { title: 'Holidays', start: '2014-12-25T09:00:00', end: '2014-12-25T11:00:00', }, ], }) let calendarWrapper = new CalendarWrapper(calendar) let viewEl = calendarWrapper.getViewEl() expect(viewEl).toHaveClass('awesome-view') expect($(viewEl).find('.hello-world').length).toBe(1) expect(CustomViewConfig.didMount.calls.count()).toBe(1) expect(CustomViewConfig.content.calls.count()).toBe(1) expect(CustomViewConfig.willUnmount.calls.count()).toBe(0) resetCounts() calendar.select('2014-12-25', '2014-01-01') expect(CustomViewConfig.didMount.calls.count()).toBe(0) expect(CustomViewConfig.content.calls.count()).toBe(1) expect(CustomViewConfig.willUnmount.calls.count()).toBe(0) resetCounts() calendar.unselect() expect(CustomViewConfig.didMount.calls.count()).toBe(0) expect(CustomViewConfig.content.calls.count()).toBe(1) expect(CustomViewConfig.willUnmount.calls.count()).toBe(0) resetCounts() calendar.destroy() expect(CustomViewConfig.didMount.calls.count()).toBe(0) expect(CustomViewConfig.content.calls.count()).toBe(0) expect(CustomViewConfig.willUnmount.calls.count()).toBe(1) }) })