import { CalendarWrapper } from '../lib/wrappers/CalendarWrapper'

describe('defaultAllDayEventDuration', () => {
  pushOptions({
    initialDate: '2014-05-01',
    initialView: 'dayGridMonth',
    timeZone: 'UTC',
  })

  describe('when forceEventDuration is on', () => {
    pushOptions({
      forceEventDuration: true,
    })

    it('correctly calculates an unspecified end when using a Duration object input', () => {
      initCalendar({
        defaultAllDayEventDuration: { days: 2 },
        events: [
          {
            allDay: true,
            start: '2014-05-05',
          },
        ],
      })

      let event = currentCalendar.getEvents()[0]
      expect(event.end).toEqualDate('2014-05-07')
    })

    it('correctly calculates an unspecified end when using a string Duration input', () => {
      initCalendar({
        defaultAllDayEventDuration: '3.00:00:00',
        events: [
          {
            allDay: true,
            start: '2014-05-05',
          },
        ],
      })

      let event = currentCalendar.getEvents()[0]
      expect(event.end).toEqualDate('2014-05-08')
    })
  })

  describe('when forceEventDuration is off', () => {
    pushOptions({
      forceEventDuration: false,
    })

    describeOptions('initialView', {
      'with dayGridWeek view': 'dayGridWeek',
      'with week view': 'timeGridWeek',
    }, () => {
      it('renders an all-day event with no `end` to appear to have the default duration', () => {
        let calendar = initCalendar({
          defaultAllDayEventDuration: { days: 2 },
          events: [
            {
              // a control. so we know how wide it should be
              title: 'control event',
              allDay: true,
              start: '2014-04-28',
              end: '2014-04-30',
            },
            {
              // one day after the control. no specified end
              title: 'test event',
              allDay: true,
              start: '2014-04-28',
            },
          ],
        })

        let calendarWrapper = new CalendarWrapper(calendar)
        let eventElms = calendarWrapper.getEventEls()

        let width0 = eventElms[0].offsetWidth
        let width1 = eventElms[1].offsetWidth
        expect(width0).toBeGreaterThan(0)
        expect(width0).toEqual(width1)
      })
    })
  })
})
