rc-adminlte
Version:
AdminLTE template ported to React
96 lines (81 loc) • 3.64 kB
JSX
import React from 'react';
import moment from 'moment';
import { mount, fireEvent } from '../../Enzyme';
import Date from './Date';
import {
simpleOptions, complexOptions, disabledOptions, getDOMNodeByClassName, getDOMNodeByQuerySelectorAll, getDOMNodeByQuerySelector,
} from './InputTestUtilities';
describe('Date tests', () => {
it('renders', () => {
const wrapper = mount(<Date />);
expect(wrapper.exists('.SingleDatePicker')).toBeTruthy();
});
it('renders name', () => {
const wrapper = mount(<Date name="unittest" />);
expect(wrapper.exists('.DateInput_input[name="unittest"]')).toBeTruthy();
});
it('renders id', () => {
const wrapper = mount(<Date id="unittest" />);
expect(wrapper.exists('.DateInput_input#unittest')).toBeTruthy();
});
it('renders simple date', () => {
const wrapper = mount(<Date value="2018-01-01" />);
expect(wrapper.find('.DateInput_input').props().value).toBe('01/01/2018');
});
it('renders moment date', () => {
const value = moment();
const wrapper = mount(<Date value={value} />);
expect(wrapper.find('.DateInput_input').props().value).toBe(value.format('MM/DD/YYYY'));
});
it('renders disabled', () => {
const wrapper = mount(<Date disabled />);
expect(wrapper.exists('.DateInput_input__disabled')).toBeTruthy();
});
it('changes to disabled', () => {
const wrapper = mount(<Date />);
expect(wrapper.exists('.DateInput_input__disabled')).toBeFalsy();
wrapper.setProps({ disabled: true });
expect(wrapper.exists('.DateInput_input__disabled')).toBeTruthy();
});
it('change to enabled', () => {
const wrapper = mount(<Date disabled />);
expect(wrapper.exists('.DateInput_input__disabled')).toBeTruthy();
wrapper.setProps({ disabled: false });
expect(wrapper.exists('.DateInput_input__disabled')).toBeFalsy();
});
it('accepts default value', () => {
const wrapper = mount(<Date defaultValue="2018-01-01" />);
expect(wrapper.find('.DateInput_input').props().value).toBe('01/01/2018');
});
it('triggers change and sets value', () => {
const changeAction = jest.fn();
const wrapper = mount(<Date onChange={changeAction} name="unittest" />);
wrapper.find('.DateInput_input').simulate('focus');
const inFiveDays = moment().add(5, 'days');
const newDate = inFiveDays.format('YYYY-MM-DD');
const resultFormat = inFiveDays.format('MM/DD/YYYY');
wrapper.find('.DateInput_input').simulate('change', { target: { name: 'unittest', value: newDate } });
expect(changeAction).toBeCalledTimes(1);
expect(wrapper.find('.DateInput_input').props().value).toBe(resultFormat);
});
it('accepts custom format', () => {
const value = moment();
const format = 'DD.MM.YYY';
const valueFormatted = value.format(format);
const wrapper = mount(<Date value={value} format={format} />);
expect(wrapper.find('.DateInput_input').props().value).toBe(valueFormatted);
});
it('changes value with moment object', () => {
const today = moment();
const inFiveDays = today.add(5, 'days');
const wrapper = mount(<Date value={today} />);
wrapper.setProps({ value: inFiveDays });
const resultFormat = inFiveDays.format('MM/DD/YYYY');
expect(wrapper.find('.DateInput_input').props().value).toBe(resultFormat);
});
it('changes to empty value', () => {
const wrapper = mount(<Date value={moment()} />);
wrapper.setProps({ value: null });
expect(wrapper.find('.DateInput_input').props().value).toBeFalsy();
});
});