import * as React from 'react'; import { shallow } from 'enzyme'; import createElement from '../../../utils/createElement'; describe('', () => { const day = new Date(2017, 2, 1); let mockIsToday; let dayFactory; let DayNode; let Day; beforeEach(() => { jest.resetModules(); }); afterAll(() => { jest.unmock('date-fns/is_today'); }); describe('when day is Today', () => { beforeAll(() => { mockIsToday = jest.fn(() => true); jest.mock('date-fns/is_today', () => mockIsToday); dayFactory = require('../Day').default; DayNode = createElement('DayNode'); Day = dayFactory({ DayNode }); }); it('passes today prop as true', () => { const wrapper = shallow(); const isToday = wrapper.find(DayNode).prop('today'); expect(isToday).toEqual(true); expect(mockIsToday).toHaveBeenCalledWith(day); }); }); describe('when day is not Today', () => { beforeAll(() => { mockIsToday = jest.fn(() => false); jest.mock('date-fns/is_today', () => mockIsToday); dayFactory = require('../Day').default; DayNode = createElement('DayNode'); Day = dayFactory({ DayNode }); }); it('passes today prop as false', () => { const _day = new Date(2017, 2, 1); const wrapper = shallow(); const isToday = wrapper.find(DayNode).prop('today'); expect(isToday).toEqual(false); expect(mockIsToday).toHaveBeenCalledWith(_day); }); it('passes disabled when day is disabled', () => { const isDayDisabled = jest.fn(() => true); const wrapper = shallow( , ); const disabled = wrapper.find(DayNode).prop('disabled'); expect(disabled).toEqual(true); expect(isDayDisabled).toHaveBeenCalledWith(day); }); it('passes highlighted when day is in highlighted range', () => { const highlighted = { from: new Date(2017, 1, 15), to: new Date(2017, 2, 15), }; const wrapper = shallow( , ); const isHighlighted = wrapper.find(DayNode).prop('highlighted'); expect(isHighlighted).toEqual(true); }); it('passes inRange when day is in selected range', () => { const selected = { from: new Date(2017, 1, 15), to: new Date(2017, 2, 15), }; const wrapper = shallow( , ); const inRange = wrapper.find(DayNode).prop('inRange'); expect(inRange).toEqual(true); }); it('passes selected when day is selected in from', () => { const selected = { from: new Date(2017, 1, 15), to: new Date(2017, 2, 15), }; const wrapper = shallow( , ); expect(wrapper.find(DayNode).prop('selected')).toEqual(true); expect(wrapper.find(DayNode).prop('selectedSource')).toEqual('from'); }); it('passes selected when day is selected in to', () => { const selected = { from: new Date(2017, 1, 15), to: new Date(2017, 2, 15), }; const wrapper = shallow( , ); expect(wrapper.find(DayNode).prop('selected')).toEqual(true); expect(wrapper.find(DayNode).prop('selectedSource')).toEqual('to'); }); }); });