import { DayGridViewWrapper } from '../lib/wrappers/DayGridViewWrapper.js' import { TimeGridViewWrapper } from '../lib/wrappers/TimeGridViewWrapper.js' import { CalendarWrapper } from '../lib/wrappers/CalendarWrapper.js' describe('scroll state', () => { let calendarEl beforeEach(() => { calendarEl = $('
').width(800).appendTo('body') }) afterEach(() => { calendarEl.remove() calendarEl = null }) pushOptions({ initialDate: '2015-02-20', contentHeight: 200, scrollTime: '00:00', // for timeGrid }) describeOptions('initialView', { 'when in month view': 'dayGridMonth', 'when in week view': 'timeGridWeek', }, (viewName) => { let ViewWrapper = viewName.match(/^dayGrid/) ? DayGridViewWrapper : TimeGridViewWrapper it('should be maintained when resizing window', (done) => { let scrollEl let scroll0 let calendar = initCalendar({ windowResize() { setTimeout(() => { // wait until all other tasks are finished expect(scrollEl.scrollTop).toBe(scroll0) done() }, 0) }, }, calendarEl) scrollEl = new ViewWrapper(calendar).getScrollerEl() setTimeout(() => { // wait until after browser's scroll state is applied scrollEl.scrollTop = 9999 // all the way scroll0 = scrollEl.scrollTop $(window).simulate('resize') }, 0) }) it('should be maintained when after rerendering events', () => { let calendar = initCalendar({ events: [{ start: '2015-02-20', }], }, calendarEl) let scrollEl = new ViewWrapper(calendar).getScrollerEl() let eventEl0 = new CalendarWrapper(calendar).getEventEls() expect(eventEl0.length).toBe(1) scrollEl.scrollTop = 9999 // all the way let scroll0 = scrollEl.scrollTop currentCalendar.render() let eventEl1 = new CalendarWrapper(calendar).getEventEls() expect(eventEl1.length).toBe(1) expect(scrollEl.scrollTop).toBe(scroll0) }) }) })