|
|
@@ -1,5 +1,8 @@
|
|
|
-describe('eventLimit', function() {
|
|
|
+import DayGridViewWrapper from "../lib/wrappers/DayGridViewWrapper"
|
|
|
+import TimeGridViewWrapper from '../lib/wrappers/TimeGridViewWrapper'
|
|
|
+import { filterVisibleEls } from '../lib/dom-misc'
|
|
|
|
|
|
+describe('eventLimit', function() {
|
|
|
pushOptions({
|
|
|
defaultDate: '2014-08-01', // important that it is the first week, so works w/ month + week views
|
|
|
eventLimit: 3
|
|
|
@@ -11,31 +14,34 @@ describe('eventLimit', function() {
|
|
|
'when in month view': 'dayGridMonth',
|
|
|
'when in dayGridWeek view': 'dayGridWeek',
|
|
|
'when in week view': 'timeGridWeek'
|
|
|
- }, function() {
|
|
|
+ }, function(viewName) {
|
|
|
+ let ViewWrapper = viewName.match(/^dayGrid/) ? DayGridViewWrapper : TimeGridViewWrapper
|
|
|
|
|
|
it('doesn\'t display a more link when limit is more than the # of events', function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-29' },
|
|
|
{ title: 'event2', start: '2014-07-29' }
|
|
|
]
|
|
|
})
|
|
|
- expect($('.fc-more').length).toBe(0)
|
|
|
+ let dayGridWrapper = new ViewWrapper(calendar).dayGrid
|
|
|
+ expect(dayGridWrapper.getMoreEls().length).toBe(0)
|
|
|
})
|
|
|
|
|
|
it('doesn\'t display a more link when limit equal to the # of events', function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-29' },
|
|
|
{ title: 'event2', start: '2014-07-29' },
|
|
|
{ title: 'event2', start: '2014-07-29' }
|
|
|
]
|
|
|
})
|
|
|
- expect($('.fc-more').length).toBe(0)
|
|
|
+ let dayGridWrapper = new ViewWrapper(calendar).dayGrid
|
|
|
+ expect(dayGridWrapper.getMoreEls().length).toBe(0)
|
|
|
})
|
|
|
|
|
|
it('displays a more link when limit is less than the # of events', function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-29' },
|
|
|
{ title: 'event2', start: '2014-07-29' },
|
|
|
@@ -43,12 +49,14 @@ describe('eventLimit', function() {
|
|
|
{ title: 'event2', start: '2014-07-29' }
|
|
|
]
|
|
|
})
|
|
|
- expect($('.fc-more').length).toBe(1)
|
|
|
- expect($('.fc-more')).toHaveText('+2 more')
|
|
|
+ let dayGridWrapper = new ViewWrapper(calendar).dayGrid
|
|
|
+ let moreEls = dayGridWrapper.getMoreEls()
|
|
|
+ expect(moreEls.length).toBe(1)
|
|
|
+ expect(moreEls[0]).toHaveText('+2 more')
|
|
|
})
|
|
|
|
|
|
it('displays one more per day, when a multi-day event is above', function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-29', end: '2014-07-31' },
|
|
|
{ title: 'event2', start: '2014-07-29', end: '2014-07-31' },
|
|
|
@@ -56,18 +64,20 @@ describe('eventLimit', function() {
|
|
|
{ title: 'event2', start: '2014-07-29', end: '2014-07-31' }
|
|
|
]
|
|
|
})
|
|
|
- var cells = $('.fc-day-grid .fc-row:eq(0) .fc-bg td:not(.fc-axis)')
|
|
|
- expect($('.fc-more').length).toBe(2)
|
|
|
- expect($('.fc-more').eq(0)).toHaveText('+2 more')
|
|
|
- expect($('.fc-more').eq(0)).toBeBoundedBy(cells.eq(2))
|
|
|
- expect($('.fc-more').eq(1)).toHaveText('+2 more')
|
|
|
- expect($('.fc-more').eq(1)).toBeBoundedBy(cells.eq(3))
|
|
|
+ let dayGridWrapper = new ViewWrapper(calendar).dayGrid
|
|
|
+ let moreEls = dayGridWrapper.getMoreEls()
|
|
|
+ let cells = dayGridWrapper.getDayElsInRow(0)
|
|
|
+ expect(moreEls.length).toBe(2)
|
|
|
+ expect(moreEls[0]).toHaveText('+2 more')
|
|
|
+ expect(moreEls[0]).toBeBoundedBy(cells[2])
|
|
|
+ expect(moreEls[1]).toHaveText('+2 more')
|
|
|
+ expect(moreEls[1]).toBeBoundedBy(cells[3])
|
|
|
})
|
|
|
|
|
|
it('will render a link in a multi-day event\'s second column ' +
|
|
|
'if it has already been hidden in the first',
|
|
|
function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-29', end: '2014-07-31' },
|
|
|
{ title: 'event2', start: '2014-07-29', end: '2014-07-31' },
|
|
|
@@ -75,18 +85,20 @@ describe('eventLimit', function() {
|
|
|
{ title: 'event2', start: '2014-07-29' }
|
|
|
]
|
|
|
})
|
|
|
- var cells = $('.fc-day-grid .fc-row:eq(0) .fc-bg td:not(.fc-axis)')
|
|
|
- expect($('.fc-more').length).toBe(2)
|
|
|
- expect($('.fc-more').eq(0)).toHaveText('+2 more')
|
|
|
- expect($('.fc-more').eq(0)).toBeBoundedBy(cells.eq(2))
|
|
|
- expect($('.fc-more').eq(1)).toHaveText('+1 more')
|
|
|
- expect($('.fc-more').eq(1)).toBeBoundedBy(cells.eq(3))
|
|
|
+ let dayGridWrapper = new ViewWrapper(calendar).dayGrid
|
|
|
+ let moreEls = dayGridWrapper.getMoreEls()
|
|
|
+ let cells = dayGridWrapper.getAllDayEls()
|
|
|
+ expect(moreEls.length).toBe(2)
|
|
|
+ expect(moreEls[0]).toHaveText('+2 more')
|
|
|
+ expect(moreEls[0]).toBeBoundedBy(cells[2])
|
|
|
+ expect(moreEls[1]).toHaveText('+1 more')
|
|
|
+ expect(moreEls[1]).toBeBoundedBy(cells[3])
|
|
|
})
|
|
|
|
|
|
it('will render a link in a multi-day event\'s second column ' +
|
|
|
'if it has already been hidden in the first even if he second column hardly has any events',
|
|
|
function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-28', end: '2014-07-30' },
|
|
|
{ title: 'event2', start: '2014-07-28', end: '2014-07-30' },
|
|
|
@@ -94,15 +106,16 @@ describe('eventLimit', function() {
|
|
|
{ title: 'event2', start: '2014-07-29', end: '2014-07-31' }
|
|
|
]
|
|
|
})
|
|
|
- var cells = $('.fc-day-grid .fc-row:eq(0) .fc-bg td:not(.fc-axis)')
|
|
|
- var link = $('.fc-more').eq(0) // will appear to be the third link, but will be in first row, so 0dom
|
|
|
- expect(link.length).toBe(1)
|
|
|
- expect(link).toHaveText('+1 more')
|
|
|
- expect(link).toBeBoundedBy(cells.eq(3))
|
|
|
+ let dayGridWrapper = new ViewWrapper(calendar).dayGrid
|
|
|
+ let moreEls = dayGridWrapper.getMoreEls()
|
|
|
+ let cells = dayGridWrapper.getDayElsInRow(0)
|
|
|
+ expect(moreEls.length).toBe(3)
|
|
|
+ expect(moreEls[0]).toHaveText('+1 more')
|
|
|
+ expect(moreEls[0]).toBeBoundedBy(cells[3])
|
|
|
})
|
|
|
|
|
|
it('will render a link in place of a hidden single day event, if covered by a multi-day', function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-28', end: '2014-07-30' },
|
|
|
{ title: 'event2', start: '2014-07-28', end: '2014-07-30' },
|
|
|
@@ -110,17 +123,18 @@ describe('eventLimit', function() {
|
|
|
{ title: 'event2', start: '2014-07-28' }
|
|
|
]
|
|
|
})
|
|
|
- var cells = $('.fc-day-grid .fc-row:eq(0) .fc-bg td:not(.fc-axis)')
|
|
|
- var link = $('.fc-more').eq(0)
|
|
|
- expect(link.length).toBe(1)
|
|
|
- expect(link).toHaveText('+2 more')
|
|
|
- expect(link).toBeBoundedBy(cells.eq(1))
|
|
|
+ let dayGridWrapper = new ViewWrapper(calendar).dayGrid
|
|
|
+ let cells = dayGridWrapper.getDayElsInRow(0)
|
|
|
+ let moreEls = dayGridWrapper.getMoreEls()
|
|
|
+ expect(moreEls.length).toBe(1)
|
|
|
+ expect(moreEls[0]).toHaveText('+2 more')
|
|
|
+ expect(moreEls[0]).toBeBoundedBy(cells[1])
|
|
|
})
|
|
|
|
|
|
it('will render a link in place of a hidden single day event, if covered by a multi-day ' +
|
|
|
'and in its second column',
|
|
|
function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-28', end: '2014-07-30' },
|
|
|
{ title: 'event2', start: '2014-07-28', end: '2014-07-30' },
|
|
|
@@ -128,17 +142,17 @@ describe('eventLimit', function() {
|
|
|
{ title: 'event2', start: '2014-07-29' }
|
|
|
]
|
|
|
})
|
|
|
- var cells = $('.fc-day-grid .fc-row:eq(0) .fc-bg td:not(.fc-axis)')
|
|
|
- var link = $('.fc-more').eq(0)
|
|
|
- expect(link.length).toBe(1)
|
|
|
- expect(link).toHaveText('+2 more')
|
|
|
- expect(link).toBeBoundedBy(cells.eq(2))
|
|
|
+ let dayGridWrapper = new ViewWrapper(calendar).dayGrid
|
|
|
+ let cells = dayGridWrapper.getDayElsInRow(0)
|
|
|
+ let moreEls = dayGridWrapper.getMoreEls()
|
|
|
+ expect(moreEls.length).toBe(1)
|
|
|
+ expect(moreEls[0]).toHaveText('+2 more')
|
|
|
+ expect(moreEls[0]).toBeBoundedBy(cells[2])
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
|
|
|
describe('when auto', function() {
|
|
|
-
|
|
|
pushOptions({
|
|
|
eventLimit: true
|
|
|
})
|
|
|
@@ -165,11 +179,12 @@ describe('eventLimit', function() {
|
|
|
})
|
|
|
|
|
|
it('renders the heights of all the rows the same, regardless of # of events', function() {
|
|
|
- initCalendar()
|
|
|
- var rowEls = $('.fc-day-grid .fc-row')
|
|
|
+ let calendar = initCalendar()
|
|
|
+ let dayGridWrapper = new DayGridViewWrapper(calendar).dayGrid
|
|
|
+ let rowEls = dayGridWrapper.getRowEls()
|
|
|
expect(rowEls.length).toBeGreaterThan(0)
|
|
|
|
|
|
- let rowHeights = rowEls.map((i, rowEl) => rowEl.getBoundingClientRect().height).get() // jQuery -> array
|
|
|
+ let rowHeights = rowEls.map((rowEl) => rowEl.getBoundingClientRect().height)
|
|
|
let totalHeight = rowHeights.reduce((prev, current) => prev + current, 0)
|
|
|
let aveHeight = totalHeight / rowHeights.length
|
|
|
|
|
|
@@ -180,9 +195,11 @@ describe('eventLimit', function() {
|
|
|
})
|
|
|
|
|
|
it('renders a more link when there are obviously too many events', function() {
|
|
|
- var $el = $('<div id="calendar">').appendTo('body').width(800)
|
|
|
- initCalendar({}, $el)
|
|
|
- expect($('.fc-more', currentCalendar.el).length).toBe(1)
|
|
|
+ let $el = $('<div id="calendar">').appendTo('body').width(800)
|
|
|
+ let calendar = initCalendar({}, $el)
|
|
|
+ let dayGridWrapper = new DayGridViewWrapper(calendar).dayGrid
|
|
|
+ let moreEls = dayGridWrapper.getMoreEls()
|
|
|
+ expect(moreEls.length).toBe(1)
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -192,23 +209,23 @@ describe('eventLimit', function() {
|
|
|
}, function() {
|
|
|
|
|
|
it('doesn\'t render a more link where there should obviously not be a limit', function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-28', end: '2014-07-30' }
|
|
|
]
|
|
|
})
|
|
|
- expect($('.fc-more').length).toBe(0)
|
|
|
+ let dayGridWrapper = new DayGridViewWrapper(calendar).dayGrid
|
|
|
+ expect(dayGridWrapper.getMoreEls().length).toBe(0)
|
|
|
})
|
|
|
})
|
|
|
|
|
|
describe('in week view', function() {
|
|
|
-
|
|
|
pushOptions({
|
|
|
defaultView: 'timeGridWeek'
|
|
|
})
|
|
|
|
|
|
it('behaves as if limit is 5', function() {
|
|
|
- initCalendar({
|
|
|
+ let calendar = initCalendar({
|
|
|
events: [
|
|
|
{ title: 'event1', start: '2014-07-29' },
|
|
|
{ title: 'event2', start: '2014-07-29' },
|
|
|
@@ -219,9 +236,13 @@ describe('eventLimit', function() {
|
|
|
{ title: 'event2', start: '2014-07-29' }
|
|
|
]
|
|
|
})
|
|
|
- expect($('.fc-event:visible').length).toBe(4)
|
|
|
- expect($('.fc-more').length).toBe(1)
|
|
|
- expect($('.fc-more')).toHaveText('+3 more')
|
|
|
+ let dayGridWrapper = new TimeGridViewWrapper(calendar).dayGrid
|
|
|
+ let eventEls = filterVisibleEls(dayGridWrapper.getEventEls())
|
|
|
+ let moreEls = dayGridWrapper.getMoreEls()
|
|
|
+
|
|
|
+ expect(eventEls.length).toBe(4)
|
|
|
+ expect(moreEls.length).toBe(1)
|
|
|
+ expect(moreEls[0]).toHaveText('+3 more')
|
|
|
})
|
|
|
})
|
|
|
})
|