UNPKG

lucid-ui

Version:

A UI component library from AppNexus.

118 lines 4.38 kB
import { shallow } from 'enzyme'; import React from 'react'; import { common, mockDate } from '../../util/generic-tests'; import { DateSelectDumb as DateSelect } from './DateSelect'; describe('DateSelect', function () { describe('common tests', function () { beforeEach(function () { mockDate('2016-02-17T14:25:23-0800'); }); afterEach(function () { mockDate.restore(); }); common(DateSelect); }); describe('event handlers', function () { it('should trigger `onSelectDate` when a non-disabled day is clicked', function () { var onSelectDate = jest.fn(); var mockEvent = {}; var selectDate = new Date('2017-02-28T00:00:00Z'); var wrapper = shallow( /*#__PURE__*/React.createElement(DateSelect, { onSelectDate: onSelectDate })); var dateSelectInstance = wrapper.instance(); dateSelectInstance.handleDayClick(selectDate, { disabled: false }, mockEvent); expect(onSelectDate).toHaveBeenCalledWith(selectDate, { event: mockEvent, props: dateSelectInstance.props }); }); it('should not trigger `onSelectDate` when a disabled day is clicked', function () { var onSelectDate = jest.fn(); var mockEvent = {}; var selectDate = new Date('2017-02-28T00:00:00Z'); var wrapper = shallow( /*#__PURE__*/React.createElement(DateSelect, { onSelectDate: onSelectDate })); var dateSelectInstance = wrapper.instance(); dateSelectInstance.handleDayClick(selectDate, { disabled: true }, mockEvent); expect(onSelectDate).not.toHaveBeenCalled(); }); it('should trigger onPrev handler', function () { var onPrev = jest.fn(); var mockEvent = {}; var wrapper = shallow( /*#__PURE__*/React.createElement(DateSelect, { initialMonth: new Date('2017-02-00T00:00:00Z'), onPrev: onPrev })); var dateSelectInstance = wrapper.instance(); dateSelectInstance.handlePrev({ event: mockEvent }); expect(onPrev).toHaveBeenCalledWith({ event: mockEvent, props: dateSelectInstance.props }); }); it('should trigger onNext handler', function () { var onNext = jest.fn(); var mockEvent = {}; var wrapper = shallow( /*#__PURE__*/React.createElement(DateSelect, { initialMonth: new Date('2017-02-00T00:00:00Z'), onNext: onNext })); var dateSelectInstance = wrapper.instance(); dateSelectInstance.handleNext({ event: mockEvent }); expect(onNext).toHaveBeenCalledWith({ event: mockEvent, props: dateSelectInstance.props }); }); }); describe('handling cursor state events', function () { it('should set cursor state on handleMouseEnter for non-disabled date', function () { var cursorDate = new Date('2017-02-17T00:00:00Z'); var wrapper = shallow( /*#__PURE__*/React.createElement(DateSelect, { initialMonth: new Date('2017-02-01T00:00:00Z') })); var dateSelectInstance = wrapper.instance(); dateSelectInstance.handleDayMouseEnter(cursorDate, { disabled: false }); expect(dateSelectInstance.state.cursor).toBe(cursorDate); }); it('should not set cursor state on handleMouseEnter for disabled date', function () { var cursorDate = new Date('2017-02-17T00:00:00Z'); var wrapper = shallow( /*#__PURE__*/React.createElement(DateSelect, { initialMonth: new Date('2017-02-01T00:00:00Z') })); var dateSelectInstance = wrapper.instance(); dateSelectInstance.handleDayMouseEnter(cursorDate, { disabled: true }); expect(dateSelectInstance.state.cursor).not.toBe(cursorDate); }); it('should unset cursor state on handleMouseLeave', function (done) { var cursorDate = new Date('2017-02-17T00:00:00Z'); var wrapper = shallow( /*#__PURE__*/React.createElement(DateSelect, { initialMonth: new Date('2017-02-01T00:00:00Z') })); var dateSelectInstance = wrapper.instance(); wrapper.setState({ cursor: cursorDate }, function () { dateSelectInstance.handleDayMouseLeave(); wrapper.setState({}, function () { expect(dateSelectInstance.state.cursor).toBeNull(); done(); }); }); }); }); });