admin-on-rest-fr05t1k
Version:
A frontend Framework for building admin applications on top of REST services, using ES6, React and Material UI
71 lines (58 loc) • 2.76 kB
JavaScript
import assert from 'assert';
import { shallow } from 'enzyme';
import React from 'react';
import sinon from 'sinon';
import DateInput, { datify } from './DateInput';
describe('DateInput .datify', () => {
it('should return null if there is no input', () => {
assert.equal(datify(), null);
assert.equal(datify(null), null);
assert.equal(datify(''), null);
});
it('should throw an error if given input is not a recognizable date', () => {
try {
datify('Hello world');
} catch (e) {
return;
}
assert.fail();
});
it('should return a date Object whichever non-null input is given', () => {
assert.deepEqual(datify(new Date('2010-05-01')), new Date('2010-05-01'));
assert.deepEqual(datify('2010-05-01'), new Date('2010-05-01'));
});
});
describe('<DateInput />', () => {
it('should render a localized <DatePicker />', () => {
const input = { value: null };
const wrapper = shallow(<DateInput source="foo" meta={{}} input={input} options={{ locale:'de-DE' }} />);
const datePicker = wrapper.find('DatePicker');
assert.equal(datePicker.length, 1);
assert.equal(datePicker.prop('locale'), 'de-DE');
});
it('should call props `input.onChange` method when changed', () => {
const input = { value: null, onChange: sinon.spy() };
const wrapper = shallow(
<DateInput source="foo" input={input} meta={{}} locale="de-DE" />
);
wrapper.find('DatePicker').simulate('change', null, '2010-01-04');
assert.deepEqual(input.onChange.args, [['2010-01-04']]);
});
describe('error message', () => {
it('should not be displayed if field is pristine', () => {
const wrapper = shallow(<DateInput source="foo" input={{ value: null }} meta={{ touched: false }} />);
const DatePicker = wrapper.find('DatePicker');
assert.equal(DatePicker.prop('errorText'), false);
});
it('should not be displayed if field has been touched but is valid', () => {
const wrapper = shallow(<DateInput source="foo" input={{ value: null }} meta={{ touched: true, error: false }} />);
const DatePicker = wrapper.find('DatePicker');
assert.equal(DatePicker.prop('errorText'), false);
});
it('should be displayed if field has been touched and is invalid', () => {
const wrapper = shallow(<DateInput source="foo" input={{ value: null }} meta={{ touched: true, error: 'Required field.' }} />);
const DatePicker = wrapper.find('DatePicker');
assert.equal(DatePicker.prop('errorText'), 'Required field.');
});
});
});