import { Draggable } from '@fullcalendar/interaction'
import { DayGridViewWrapper } from '../lib/wrappers/DayGridViewWrapper.js'
describe('external event dragging', () => {
let $dragEl
let thirdPartyDraggable
beforeEach(() => {
$dragEl = $('
yo
')
.css({
width: 200,
background: 'blue',
color: 'white',
})
.appendTo('body')
})
afterEach(() => {
if (thirdPartyDraggable) {
thirdPartyDraggable.destroy()
}
$dragEl.remove()
$dragEl = null
})
describe('with forceEventDuration', () => {
pushOptions({
forceEventDuration: true,
defaultTimedEventDuration: '1:30',
})
// https://github.com/fullcalendar/fullcalendar/issues/4597
it('should yield an event with an end', (done) => {
let calendar = initCalendar({
initialView: 'dayGridMonth',
initialDate: '2019-04-01',
droppable: true,
defaultAllDayEventDuration: { days: 2 },
eventReceive(arg) {
expect(arg.event.end).toEqualDate('2019-04-04')
done()
},
})
let dayGridWrapper = new DayGridViewWrapper(calendar).dayGrid
thirdPartyDraggable = new Draggable($dragEl[0], {
eventData: {},
})
$dragEl.simulate('drag', {
end: dayGridWrapper.getDayEl('2019-04-02'),
})
})
})
// https://github.com/fullcalendar/fullcalendar/issues/4575
it('provides eventAllow with a valid event with null start/end', (done) => {
let called = false
let calendar = initCalendar({
initialView: 'dayGridMonth',
initialDate: '2019-04-01',
droppable: true,
defaultAllDayEventDuration: { days: 2 },
eventAllow(dropInfo, draggedEvent) {
expect(draggedEvent.id).toBe('a')
expect(draggedEvent.title).toBe('hey')
expect(draggedEvent.start).toBe(null)
expect(draggedEvent.end).toBe(null)
called = true
return true
},
})
let dayGridWrapper = new DayGridViewWrapper(calendar).dayGrid
thirdPartyDraggable = new Draggable($dragEl[0], {
eventData: {
id: 'a',
title: 'hey',
},
})
$dragEl.simulate('drag', {
end: dayGridWrapper.getDayEl('2019-04-02'),
callback() {
expect(called).toBe(true)
done()
},
})
})
})