UNPKG

rc-adminlte

Version:

AdminLTE template ported to React

96 lines (81 loc) 3.64 kB
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(); }); });