Просмотр исходного кода

start using DayGridViewWrapper. forgot to add other wrappers

Adam Shaw 6 лет назад
Родитель
Сommit
2ebf98e7ca

+ 1 - 1
packages-premium

@@ -1 +1 @@
-Subproject commit 9833ba06478c1a6d12af171d55ab3bd1ba31ddf5
+Subproject commit b332998ea2e10fa11c7eb58da9816bf0451d0be7

+ 0 - 18
packages/__tests__/src/lib/day-grid.js

@@ -1,18 +0,0 @@
-import { formatIsoDay } from './datelib-utils'
-
-
-export function getDayGridDayEls(date) {
-  if (typeof date === 'string') {
-    date = new Date(date)
-  }
-  return $('.fc-day-grid .fc-day[data-date="' + formatIsoDay(date) + '"]')
-}
-
-export function getDayGridAxis() {
-  return $('.fc-day-grid .fc-axis')
-}
-
-// TODO: discourage use
-export function getDayGridDowEls(dayAbbrev) {
-  return $(`.fc-day-grid .fc-row:first-child td.fc-day.fc-${dayAbbrev}`)
-}

+ 1 - 0
packages/__tests__/src/lib/dom-geom.js

@@ -78,6 +78,7 @@ export function getTrailingBoundingRect(els, dir = 'ltr') {
 
 
 export function sortBoundingRects(els, dir) {
+  els = $(els) // TODO: un-jquery-ify
   const rects = els.map(function(i, node) {
     return getBoundingRect(node)
   }).get()

+ 15 - 0
packages/__tests__/src/lib/wrappers/CalendarWrapper.ts

@@ -0,0 +1,15 @@
+import { Calendar } from '@fullcalendar/core'
+import ToolbarWrapper from './ToolbarWrapper'
+
+export default class CalendarWrapper {
+
+  constructor(private calendar: Calendar) {
+  }
+
+  // TODO: distinguish between header/footer
+  get toolbar() {
+    let toolbarEl = this.calendar.el.querySelector('.fc-toolbar') as HTMLElement
+    return toolbarEl ? new ToolbarWrapper(toolbarEl) : null
+  }
+
+}

+ 15 - 0
packages/__tests__/src/lib/wrappers/DayGridViewWrapper.ts

@@ -0,0 +1,15 @@
+import { Calendar } from '@fullcalendar/core'
+import ViewWrapper from './ViewWrapper'
+import DayGridWrapper from './DayGridWrapper'
+
+export default class DayGridViewWrapper extends ViewWrapper {
+
+  constructor(calendar: Calendar) {
+    super(calendar, 'fc-dayGrid-view')
+  }
+
+  get dayGrid() {
+    return new DayGridWrapper(this.el.querySelector('.fc-day-grid'))
+  }
+
+}

+ 22 - 0
packages/__tests__/src/lib/wrappers/DayGridWrapper.ts

@@ -0,0 +1,22 @@
+import { findElements } from '@fullcalendar/core'
+import { formatIsoDay } from '../datelib-utils'
+
+export default class DayGridWrapper {
+
+  constructor(private el: HTMLElement) {
+  }
+
+  // TODO: discourage use
+  getDayEls(date) {
+    if (typeof date === 'string') {
+      date = new Date(date)
+    }
+    return findElements(this.el, '.fc-day[data-date="' + formatIsoDay(date) + '"]')
+  }
+
+  // TODO: discourage use
+  getDowEls(dayAbbrev) {
+    return findElements(this.el, `.fc-row:first-child td.fc-day.fc-${dayAbbrev}`)
+  }
+
+}

+ 16 - 0
packages/__tests__/src/lib/wrappers/ToolbarWrapper.ts

@@ -0,0 +1,16 @@
+
+export default class ToolbarWrapper {
+
+  constructor(private el: HTMLElement) {
+  }
+
+  getButtonEnabled(name) {
+    let buttonEl = this.el.querySelector('.fc-' + name + '-button') as HTMLButtonElement
+    return buttonEl && !buttonEl.disabled
+  }
+
+  getTitleText() {
+    return this.el.querySelector('h2').innerText.trim()
+  }
+
+}

+ 15 - 0
packages/__tests__/src/lib/wrappers/ViewWrapper.ts

@@ -0,0 +1,15 @@
+import { Calendar } from '@fullcalendar/core'
+
+export default class ViewWrapper {
+
+  protected el: HTMLElement
+
+  constructor(calendar: Calendar, className: string) {
+    let viewEl = calendar.el.querySelector('.fc-view') as HTMLElement
+    if (!viewEl || !viewEl.classList.contains(className)) {
+      throw new Error(`Can't find view with className '${className}' in test model`)
+    }
+    this.el = viewEl
+  }
+
+}