Преглед изворни кода

Merge branch 'jquery-removal' into v4

Adam Shaw пре 7 година
родитељ
комит
8c4ba41f53

+ 2 - 1
tests/automated/date-render/dayNumbers.js

@@ -1,3 +1,4 @@
+import { getDayElTopElText } from '../view-render/DayGridRenderUtils'
 
 describe('dayNumbers', function() {
   pushOptions({
@@ -9,7 +10,7 @@ describe('dayNumbers', function() {
       defaultView: 'month',
       locale: 'ar'
     })
-    expect($('td[data-date="2018-01-01"]')).toContainText('١') // an Arabic 1
+    expect(getDayElTopElText('2018-01-01')).toEqual('١') // an Arabic 1
   })
 
 })

+ 5 - 3
tests/automated/event-data/refetchEvents.js

@@ -1,3 +1,5 @@
+import { getScrollerEl } from '../lib/MonthViewUtils'
+import { getEventEls } from '../event-render/EventRenderUtils'
 
 describe('refetchEvents', function() {
 
@@ -21,9 +23,9 @@ describe('refetchEvents', function() {
       ]
     }, el)
 
-    expect($('.fc-event').length).toBe(8)
+    expect(getEventEls().length).toBe(8)
 
-    scrollEl = el.find('.fc-scroller')
+    scrollEl = getScrollerEl()
     scrollEl.scrollTop(1000)
     scrollTop = scrollEl.scrollTop()
 
@@ -31,7 +33,7 @@ describe('refetchEvents', function() {
     expect(scrollTop).toBeGreaterThan(10)
 
     currentCalendar.refetchEvents()
-    expect($('.fc-event').length).toBe(8)
+    expect(getEventEls().length).toBe(8)
     expect(scrollEl.scrollTop()).toBe(scrollTop)
   })
 })

+ 2 - 2
tests/automated/event-drag/DayGridEventDragUtils.js

@@ -3,8 +3,8 @@ import * as DayGridRenderUtils from '../view-render/DayGridRenderUtils'
 
 
 export function drag(startDate, endDate, debug) {
-  var el0 = DayGridRenderUtils.getSingleDayEl(startDate)
-  var el1 = DayGridRenderUtils.getSingleDayEl(endDate)
+  var el0 = DayGridRenderUtils.getDayEl(startDate)
+  var el1 = DayGridRenderUtils.getDayEl(endDate)
 
   return EventDragUtils.drag(
     el0[0].getBoundingClientRect(),

+ 5 - 4
tests/automated/event-drag/repeating.js

@@ -1,4 +1,5 @@
 import * as TimeGridEventDragUtils from './TimeGridEventDragUtils'
+import { getVisibleEventEls, getFirstEventEl } from '../event-render/EventRenderUtils'
 
 describe('event dragging on repeating events', function() {
   pushOptions({
@@ -40,7 +41,7 @@ describe('event dragging on repeating events', function() {
       eventDragStart: function() {
         setTimeout(function() { // try go execute DURING the drag
           expect(
-            $('.fc-event:visible').filter(function(i, node) {
+            getVisibleEventEls().filter(function(i, node) {
               return $(node).css('visibility') !== 'hidden'
             }).length
           ).toBe(1)
@@ -53,7 +54,7 @@ describe('event dragging on repeating events', function() {
       }
     })
 
-    $('.fc-event:first').simulate('drag', {
+    getFirstEventEl().simulate('drag', {
       dx: 100,
       duration: 100 // ample time for separate eventDragStart/eventDrop
     })
@@ -76,7 +77,7 @@ describe('event dragging on repeating events', function() {
       eventDragStart: function() {
         setTimeout(function() { // try go execute DURING the drag
           expect(
-            $('.fc-event:visible').filter(function(i, node) {
+            getVisibleEventEls().filter(function(i, node) {
               return $(node).css('visibility') !== 'hidden'
             }).length
           ).toBe(2) // the dragging event AND the other regular event
@@ -89,7 +90,7 @@ describe('event dragging on repeating events', function() {
       }
     })
 
-    $('.fc-event:first').simulate('drag', {
+    getFirstEventEl().simulate('drag', {
       dx: 100,
       duration: 100 // ample time for separate eventDragStart/eventDrop
     })

+ 1 - 1
tests/automated/event-drag/showNonCurrentDates.js

@@ -17,7 +17,7 @@ describe('showNonCurrentDates event dragging', function() {
     pit('won\'t allow the drop', function() {
       initCalendar()
       return EventDragUtils.drag(
-        DayGridRenderUtils.getSingleDayEl('2017-06-08')[0].getBoundingClientRect(),
+        DayGridRenderUtils.getDayEl('2017-06-08')[0].getBoundingClientRect(),
         DayGridRenderUtils.getDisabledEl(3)[0].getBoundingClientRect() // the cell before Jun 1
       ).then(function(res) {
         expect(res.isSuccess).toBe(false)

+ 37 - 1
tests/automated/event-render/EventRenderUtils.js

@@ -1,3 +1,7 @@
+const EVENT_CLASS = 'fc-event'
+const TITLE_CLASS = 'fc-title'
+const RESIZER_CLASS = 'fc-resizer'
+const TIME_CLASS = 'fc-time'
 
 export function expectIsStart(bool) {
   var el = getSingleEl()
@@ -19,8 +23,40 @@ export function expectIsEnd(bool) {
   }
 }
 
+export function getEventElTimeText(el) {
+  return $(el).find(`.${TIME_CLASS}`).text()
+}
+
+export function getVisibleEventEls() {
+  return $(`.${EVENT_CLASS}:visible`)
+}
+
+export function getEventEls() {
+  return $(`.${EVENT_CLASS}`)
+}
+
+export function getFirstEventEl() {
+  return getEventEls().first()
+}
+
+export function getLastEventEl() {
+  return getEventEls().last()
+}
+
+export function getEventElTitleEl(eventEl) {
+  return eventEl.find(`.${TITLE_CLASS}`)
+}
+
+export function getEventElResizerEl(eventEl) {
+  return eventEl.find(`.${RESIZER_CLASS}`)
+}
+
 export function getSingleEl() {
-  var els = $('.fc-event')
+  var els = getEventEls()
   expect(els).toHaveLength(1)
   return els
 }
+
+export function getEventElTimeEl(el) {
+  return el.find('.fc-time')
+}

+ 8 - 5
tests/automated/event-render/TimeGridEventRenderUtils.js

@@ -1,7 +1,10 @@
+import { getDayEls } from '../view-render/DayGridRenderUtils'
+import { getSlotEls } from '../lib/time-grid'
+import { getEventEls, getEventElTimeText } from './EventRenderUtils'
 
 export function getTimeTexts() {
-  return $('.fc-event').map(function(i, eventEl) {
-    return $(eventEl).find('.fc-time').text()
+  return getEventEls().map(function(i, eventEl) {
+    return getEventElTimeText(eventEl)
   }).get()
 }
 
@@ -20,7 +23,7 @@ export function checkEventRendering(start, end) {
   }
 
   var expectedRects = computeSpanRects(start, end)
-  var eventEls = $('.fc-event') // sorted by DOM order. not good for RTL
+  var eventEls = getEventEls() // sorted by DOM order. not good for RTL
   var isMatch = checkEventRenderingMatch(expectedRects, eventEls)
 
   return {
@@ -139,7 +142,7 @@ export function computeSpanRects(start, end) {
 
 
 function computeDays() {
-  var dayEls = $('.fc-day-header[data-date]')
+  var dayEls = getDayEls()
 
   var days = dayEls.map(function(i, node) {
     var rect = node.getBoundingClientRect()
@@ -155,7 +158,7 @@ function computeDays() {
 
 
 function computeSlots() {
-  var slotEls = $('.fc-time-grid .fc-slats tr[data-time]')
+  var slotEls = getSlotEls()
 
   var slots = slotEls.map(function(i, node) {
     var rect = node.getBoundingClientRect()

+ 2 - 1
tests/automated/event-render/eventOrder.js

@@ -1,3 +1,4 @@
+import { getEventEls } from './EventRenderUtils'
 
 describe('eventOrder', function() {
   pushOptions({
@@ -33,7 +34,7 @@ describe('eventOrder', function() {
   })
 
   function getEventOrder() {
-    return $('.fc-event').map(function(i, node) {
+    return getEventEls().map(function(i, node) {
       return $(node).data('event-id')
     }).get()
   }

+ 2 - 2
tests/automated/event-resize/DayGridEventResizeUtils.js

@@ -3,8 +3,8 @@ import * as DayGridRenderUtils from '../view-render/DayGridRenderUtils'
 
 
 export function resize(startDate, endDate, debug) {
-  var el0 = DayGridRenderUtils.getSingleDayEl(startDate)
-  var el1 = DayGridRenderUtils.getSingleDayEl(endDate)
+  var el0 = DayGridRenderUtils.getDayEl(startDate)
+  var el1 = DayGridRenderUtils.getDayEl(endDate)
 
   return EventResizeUtils.resize(
     el0[0].getBoundingClientRect(),

+ 1 - 1
tests/automated/event-resize/validRange.js

@@ -18,7 +18,7 @@ describe('validRange event resizing', function() {
     pit('won\'t go after validRange', function() {
       initCalendar()
       return EventResizeUtils.resize(
-        DayGridRenderUtils.getSingleDayEl('2017-06-06')[0].getBoundingClientRect(),
+        DayGridRenderUtils.getDayEl('2017-06-06')[0].getBoundingClientRect(),
         DayGridRenderUtils.getDisabledEl(0)[0].getBoundingClientRect() // where Jun 9th would be
       ).then(function(res) {
         expect(res.isSuccess).toBe(false)

+ 1 - 1
tests/automated/legacy/events-gcal.js

@@ -8,7 +8,7 @@ if (SKIP_GCAL) {
 
 // eslint-disable-next-line
 SKIP_GCAL ||
-describe('Google Calendar plugin', function() {
+xdescribe('Google Calendar plugin', function() {
 
   var API_KEY = 'AIzaSyDcnW6WejpTOCffshGDDb4neIrXVUA1EAE'
   var HOLIDAY_CALENDAR_ID = 'en.usa#[email protected]'

+ 5 - 0
tests/automated/lib/MonthViewUtils.js

@@ -0,0 +1,5 @@
+const SCROLLER_CLASS = 'fc-scroller'
+
+export function getScrollerEl() {
+  return $(currentCalendar.el).find(`.${SCROLLER_CLASS}`)
+}

+ 27 - 19
tests/automated/lib/dnd-resize-utils.js

@@ -1,7 +1,15 @@
-import { formatIsoDay } from '../datelib/utils'
+import { formatIsoDay, addDays } from '../datelib/utils'
+import { getTimeGridDayEls, getSlotElByIndex } from './time-grid'
+import { getDayEl } from '../view-render/DayGridRenderUtils'
+import {
+  getEventElResizerEl,
+  getEventElTitleEl,
+  getEventElTimeEl,
+  getFirstEventEl,
+  getLastEventEl
+} from '../event-render/EventRenderUtils'
 
 
-// this function has been mangled to work with external jqui draggables as well
 export function testEventDrag(options, dropDate, expectSuccess, callback, eventClassName) {
   var eventsRendered = false
 
@@ -30,19 +38,19 @@ export function testEventDrag(options, dropDate, expectSuccess, callback, eventC
       dropDateHasTime = true
     }
 
-    eventEl = $('.' + (eventClassName || 'fc-event') + ':first')
+    eventEl = eventClassName ? $(`.${eventClassName}:first`) : getFirstEventEl()
     expect(eventEl.length).toBe(1)
 
     if (dropDateHasTime) {
-      dragEl = eventEl.find('.fc-time')
-      dayEl = $('.fc-time-grid .fc-day[data-date="' + formatIsoDay(dropDate) + '"]')
+      dragEl = getEventElTimeEl(eventEl)
+      dayEl = getTimeGridDayEls(dropDate)
       slatIndex = dropDate.getUTCHours() * 2 + (dropDate.getUTCMinutes() / 30) // assumes slotDuration:'30:00'
-      slatEl = $('.fc-slats tr:eq(' + slatIndex + ')')
+      slatEl = getSlotElByIndex(slatIndex)
       expect(slatEl.length).toBe(1)
       dy = slatEl.offset().top - eventEl.offset().top
     } else {
-      dragEl = eventEl.find('.fc-title')
-      dayEl = $('.fc-day-grid .fc-day[data-date="' + formatIsoDay(dropDate) + '"]')
+      dragEl = getEventElTitleEl(eventEl)
+      dayEl = getDayEl(dropDate)
       dy = dayEl.offset().top - eventEl.offset().top
     }
 
@@ -122,17 +130,17 @@ export function testEventResize(options, resizeDate, expectSuccess, callback, ev
       resizeDateHasTime = true
     }
 
-    eventEl = $('.' + (eventClassName || 'fc-event') + ':last')
-    dragEl = eventEl.find('.fc-resizer')
+    eventEl = eventClassName ? $(`.${eventClassName}:first`) : getLastEventEl(eventClassName)
+    dragEl = getEventElResizerEl(eventEl)
 
     if (resizeDateHasTime) {
-      lastDayEl = $('.fc-time-grid .fc-day[data-date="' + formatIsoDay(resizeDate) + '"]')
+      lastDayEl = getTimeGridDayEls(resizeDate)
       lastSlatIndex = resizeDate.getUTCHours() * 2 + (resizeDate.getUTCMinutes() / 30) // assumes slotDuration:'30:00'
-      lastSlatEl = $('.fc-slats tr:eq(' + (lastSlatIndex - 1) + ')')
+      lastSlatEl = getSlotElByIndex(lastSlatIndex - 1)
       expect(lastSlatEl.length).toBe(1)
       dy = lastSlatEl.offset().top + lastSlatEl.outerHeight() - (eventEl.offset().top + eventEl.outerHeight())
     } else {
-      lastDayEl = $('.fc-day-grid .fc-day[data-date="' + formatIsoDay(FullCalendar.addDays(resizeDate, -1)) + '"]')
+      lastDayEl = getDayEl(addDays(resizeDate, -1))
       dy = lastDayEl.offset().top - eventEl.offset().top
     }
 
@@ -206,19 +214,19 @@ export function testSelection(options, start, end, expectSuccess, callback) {
   initCalendar(options)
 
   if (!isAllDay) {
-    firstDayEl = $('.fc-time-grid .fc-day[data-date="' + formatIsoDay(start) + '"]')
-    lastDayEl = $('.fc-time-grid .fc-day[data-date="' + formatIsoDay(end) + '"]')
+    firstDayEl = getTimeGridDayEls(start)
+    lastDayEl = getTimeGridDayEls(end)
     firstSlatIndex = start.getUTCHours() * 2 + (start.getUTCMinutes() / 30) // assumes slotDuration:'30:00'
     lastSlatIndex = end.getUTCHours() * 2 + (end.getUTCMinutes() / 30) - 1 // assumes slotDuration:'30:00'
-    firstSlatEl = $('.fc-slats tr:eq(' + firstSlatIndex + ')')
-    lastSlatEl = $('.fc-slats tr:eq(' + lastSlatIndex + ')')
+    firstSlatEl = getSlotElByIndex(firstSlatIndex)
+    lastSlatEl = getSlotElByIndex(lastSlatIndex)
     expect(firstSlatEl.length).toBe(1)
     expect(lastSlatEl.length).toBe(1)
     dy = lastSlatEl.offset().top - firstSlatEl.offset().top
     dragEl = firstSlatEl
   } else {
-    firstDayEl = $('.fc-day-grid .fc-day[data-date="' + formatIsoDay(start) + '"]')
-    lastDayEl = $('.fc-day-grid .fc-day[data-date="' + formatIsoDay(new Date(end.valueOf() - 1)) + '"]') // inclusive
+    firstDayEl = getDayEl(start)
+    lastDayEl = getDayEl(new Date(end.valueOf() - 1)) // inclusive
     dy = lastDayEl.offset().top - firstDayEl.offset().top
     dragEl = firstDayEl
   }

+ 11 - 3
tests/automated/lib/time-grid.js

@@ -86,7 +86,7 @@ export function getTimeGridLine(date) { // not in Scheduler
 
 export function getTimeGridTop(targetTimeMs) {
   const topBorderWidth = 1 // TODO: kill
-  let slotEls = getTimeGridSlotEls(targetTimeMs)
+  let slotEls = getSlotElByTime(targetTimeMs)
   let slotEl
 
   // exact slot match
@@ -94,7 +94,7 @@ export function getTimeGridTop(targetTimeMs) {
     return slotEls.eq(0).offset().top + topBorderWidth
   }
 
-  slotEls = $('.fc-time-grid .fc-slats tr[data-time]') // all slots
+  slotEls = getSlotEls() // all slots
   let slotTimeMs = null
   let prevSlotTimeMs = null
 
@@ -138,8 +138,16 @@ export function getTimeGridDayEls(date) {
   return $('.fc-time-grid .fc-day[data-date="' + formatIsoDay(date) + '"]')
 }
 
+export function getSlotEls() {
+  return $('.fc-time-grid .fc-slats tr[data-time]')
+}
+
+
+export function getSlotElByIndex(index) {
+  return $(`.fc-slats tr:eq(${index})`)
+}
 
-export function getTimeGridSlotEls(timeMs) {
+export function getSlotElByTime(timeMs) {
   const date = new Date('2016-01-01')
   date = new Date(date.valueOf() + timeMs)
 

+ 26 - 6
tests/automated/view-render/DayGridRenderUtils.js

@@ -1,18 +1,38 @@
 import { formatIsoDay } from '../datelib/utils'
 
-
-export function getSingleDayEl(date) {
+export function getDayEl(date) {
   if (typeof date === 'string') {
     date = new Date(date)
   }
-  var els = $('.fc-day-grid .fc-bg .fc-day[data-date="' + formatIsoDay(date) + '"]')
-  expect(els).toHaveLength(1)
-  return els
+  return $('.fc-day-grid .fc-bg .fc-day[data-date="' + formatIsoDay(date) + '"]')
 }
 
-
 export function getDisabledEl(i) {
   var el = $('.fc-day-grid .fc-bg .fc-disabled-day:eq(' + i + ')')
   expect(el).toHaveLength(1)
   return el
 }
+
+export function getDayEls() {
+  return $('.fc-day-header')
+}
+
+export function getDayElTopElText(date) {
+  return $(`td.fc-day-top[data-date="${date}"]`).text()
+}
+
+export function getHeaderEl() {
+  return $('.fc-view > table > .fc-head')
+}
+
+export function hasHeaderEl() {
+  return getHeaderEl().length === 1
+}
+
+export function getFirstDayEl() {
+  return getDayEls().first()
+}
+
+export function getLastDayEl() {
+  return getDayEls().last()
+}

+ 3 - 7
tests/automated/view-render/columnHeader.js

@@ -1,3 +1,4 @@
+import { hasHeaderEl } from './DayGridRenderUtils'
 
 describe('columnHeader', function() {
   pushOptions({
@@ -17,7 +18,7 @@ describe('columnHeader', function() {
 
       it('should show header', function() {
         initCalendar()
-        expect(hasHeader()).toBe(true)
+        expect(hasHeaderEl()).toBe(true)
       })
     })
 
@@ -28,13 +29,8 @@ describe('columnHeader', function() {
 
       it('should not show header', function() {
         initCalendar()
-        expect(hasHeader()).toBe(false)
+        expect(hasHeaderEl()).toBe(false)
       })
     })
   })
-
-  function hasHeader() {
-    return $('.fc-view > table > .fc-head').length === 1
-  }
-
 })

+ 2 - 1
tests/automated/view-render/columnHeaderHtml.js

@@ -1,3 +1,4 @@
+import { getFirstDayEl } from './DayGridRenderUtils'
 
 describe('columnHeaderHtml', function() {
   pushOptions({
@@ -20,7 +21,7 @@ describe('columnHeaderHtml', function() {
   })
 
   function hasCustomHtml() {
-    var firstHeader = $('.fc-day-header:first')
+    var firstHeader = getFirstDayEl()
 
     return firstHeader.find('.test').length === 1 && firstHeader.text() === 'Sunday'
   }

+ 2 - 1
tests/automated/view-render/columnHeaderText.js

@@ -1,3 +1,4 @@
+import { getFirstDayEl } from './DayGridRenderUtils'
 
 describe('columnHeaderText', function() {
   pushOptions({
@@ -20,7 +21,7 @@ describe('columnHeaderText', function() {
   })
 
   function hasCustomText() {
-    var firstHeader = $('.fc-day-header:first')
+    var firstHeader = getFirstDayEl()
 
     return firstHeader.text() === '<div>Custom Sunday</div>'
   }