import { shallow } from 'enzyme'; import React from 'react'; import { common, mockDate } from '../../util/generic-tests'; describe('CalendarMonth', () => { mockDate('2016-02-01T14:25:23-0800'); // Must load ./CalendarMonth after mocking date const CalendarMonth = require('./CalendarMonth').default; describe('common tests', () => { common(CalendarMonth); }); describe('modifierRange', () => { it('`cursor` date should be in range', () => { const wrapper = shallow( ); const calendarMonthInstance: any = wrapper.instance(); const isInRange = calendarMonthInstance.modifierRange( new Date('2017-02-14T00:00:00Z') ); expect(isInRange).toBe(true); }); it('dates between `from` and `cursor` should be in range', () => { const wrapper = shallow( ); const calendarMonthInstance: any = wrapper.instance(); const isInRange11 = calendarMonthInstance.modifierRange( new Date('2017-02-11T00:00:00Z') ); const isInRange12 = calendarMonthInstance.modifierRange( new Date('2017-02-12T00:00:00Z') ); const isInRange13 = calendarMonthInstance.modifierRange( new Date('2017-02-13T00:00:00Z') ); const isInRange14 = calendarMonthInstance.modifierRange( new Date('2017-02-14T00:00:00Z') ); const isInRange15 = calendarMonthInstance.modifierRange( new Date('2017-02-15T00:00:00Z') ); expect(isInRange11).toBeFalsy(); expect(isInRange12).toBe(true); expect(isInRange13).toBe(true); expect(isInRange14).toBe(true); expect(isInRange15).toBeFalsy(); }); it('`cursor` date should only date in range if `from` or `to` not set', () => { const wrapper = shallow( ); const calendarMonthInstance: any = wrapper.instance(); const isInRange13 = calendarMonthInstance.modifierRange( new Date('2017-02-13T00:00:00Z') ); const isInRange14 = calendarMonthInstance.modifierRange( new Date('2017-02-14T00:00:00Z') ); const isInRange15 = calendarMonthInstance.modifierRange( new Date('2017-02-15T00:00:00Z') ); expect(isInRange13).toBeFalsy(); expect(isInRange14).toBe(true); expect(isInRange15).toBeFalsy(); }); it('dates should in range between `from` and `to` without `cursor`', () => { const wrapper = shallow( ); const calendarMonthInstance: any = wrapper.instance(); const isInRange11 = calendarMonthInstance.modifierRange( new Date('2017-02-11T00:00:00Z') ); const isInRange12 = calendarMonthInstance.modifierRange( new Date('2017-02-12T00:00:00Z') ); const isInRange13 = calendarMonthInstance.modifierRange( new Date('2017-02-13T00:00:00Z') ); const isInRange14 = calendarMonthInstance.modifierRange( new Date('2017-02-14T00:00:00Z') ); const isInRange15 = calendarMonthInstance.modifierRange( new Date('2017-02-15T00:00:00Z') ); expect(isInRange11).toBeFalsy(); expect(isInRange12).toBe(true); expect(isInRange13).toBe(true); expect(isInRange14).toBe(true); expect(isInRange15).toBeFalsy(); }); it('should return false if no cursor or range dates', () => { const wrapper = shallow( ); const calendarMonthInstance: any = wrapper.instance(); const isInRange = calendarMonthInstance.modifierRange( new Date('2017-02-14T00:00:00Z') ); expect(isInRange).toBe(false); }); }); describe('modifierFrom', () => { it('should mark `from` day', () => { const wrapper = shallow( ); const calendarMonthInstance: any = wrapper.instance(); const isFromDate = calendarMonthInstance.modifierFrom( new Date('2017-02-14T00:00:00Z') ); expect(isFromDate).toBe(true); }); }); describe('modifierTo', () => { it('should mark `to` day', () => { const wrapper = shallow( ); const calendarMonthInstance: any = wrapper.instance(); const isToDate = calendarMonthInstance.modifierTo( new Date('2017-02-14T00:00:00Z') ); expect(isToDate).toBe(true); }); }); describe('shouldComponentUpdate', () => { it('should determine shouldComponentUpdate by using prop value', () => { const wrapper = shallow(); const calendarMonthInstance: any = wrapper.instance(); const shouldComponentUpdate = calendarMonthInstance.shouldComponentUpdate(); expect(shouldComponentUpdate).toBe(true); }); }); });