lucid-ui
Version:
A UI component library from AppNexus.
118 lines • 4.38 kB
JavaScript
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();
});
});
});
});
});