/* global it, describe, expect, jest */
|
|
import React from 'react'; // eslint-disable-line no-unused-vars
|
import Datetime from '../DateTime.js';
|
import renderer from 'react-test-renderer';
|
|
// findDOMNode is not supported by the react-test-renderer,
|
// and even though this component is not using that method
|
// a dependency is probably using it. So we need to mock it
|
// to make the tests pass.
|
// https://github.com/facebook/react/issues/7371
|
jest.mock('react-dom', () => ({
|
findDOMNode: () => {},
|
}));
|
|
// Mock date to get rid of time as a factor to make tests deterministic
|
Date.now = jest.fn(() => 1482363367071);
|
|
it('everything default: renders correctly', () => {
|
const tree = renderer.create(
|
<Datetime />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('value: set to arbitrary value', () => {
|
const tree = renderer.create(
|
<Datetime defaultValue={Date.now()} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('defaultValue: set to arbitrary value', () => {
|
const tree = renderer.create(
|
<Datetime defaultValue={Date.now()} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
describe('dateFormat', () => {
|
it('set to true', () => {
|
const tree = renderer.create(
|
<Datetime dateFormat={true} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('set to false', () => {
|
const tree = renderer.create(
|
<Datetime dateFormat={false} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
});
|
|
describe('timeFormat', () => {
|
it('set to true', () => {
|
const tree = renderer.create(
|
<Datetime timeFormat={true} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('set to false', () => {
|
const tree = renderer.create(
|
<Datetime timeFormat={false} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
});
|
|
describe('input', () => {
|
it('input: set to true', () => {
|
const tree = renderer.create(
|
<Datetime input={true} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('input: set to false', () => {
|
const tree = renderer.create(
|
<Datetime input={false} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
});
|
|
describe('open', () => {
|
it('set to true', () => {
|
const tree = renderer.create(
|
<Datetime open={true} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('set to false', () => {
|
const tree = renderer.create(
|
<Datetime open={false} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
});
|
|
describe('viewMode', () => {
|
it('set to days', () => {
|
const tree = renderer.create(
|
<Datetime viewMode={'days'} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('set to months', () => {
|
const tree = renderer.create(
|
<Datetime viewMode={'months'} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('set to years', () => {
|
const tree = renderer.create(
|
<Datetime viewMode={'years'} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('set to time', () => {
|
const tree = renderer.create(
|
<Datetime viewMode={'time'} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
});
|
|
it('className: set to arbitraty value', () => {
|
const tree = renderer.create(
|
<Datetime className={'arbitrary-value'} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
describe('inputProps', () => {
|
it('with placeholder specified', () => {
|
const tree = renderer.create(
|
<Datetime inputProps={{ placeholder: 'arbitrary-placeholder' }} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('with disabled specified', () => {
|
const tree = renderer.create(
|
<Datetime inputProps={{ disabled: true }} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('with required specified', () => {
|
const tree = renderer.create(
|
<Datetime inputProps={{ required: true }} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('with name specified', () => {
|
const tree = renderer.create(
|
<Datetime inputProps={{ name: 'arbitrary-name' }} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('with className specified', () => {
|
const tree = renderer.create(
|
<Datetime inputProps={{ className: 'arbitrary-className' }} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
});
|
|
it('isValidDate: only valid if after yesterday', () => {
|
const yesterday = Datetime.moment().subtract(1, 'day');
|
const valid = (current) => current.isAfter(yesterday);
|
const tree = renderer.create(
|
<Datetime isValidDate={ valid } />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('renderDay: specified', () => {
|
const renderDay = (props, currentDate) => <td {...props}>{ '0' + currentDate.date() }</td>;
|
const tree = renderer.create(
|
<Datetime renderDay={renderDay} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('renderMonth: specified', () => {
|
const renderMonth = (props, currentDate) => <td {...props}>{ '0' + currentDate.date() }</td>;
|
const tree = renderer.create(
|
<Datetime renderMonth={renderMonth} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|
|
it('renderYear: specified', () => {
|
const renderYear = (props, currentDate) => <td {...props}>{ '0' + currentDate.date() }</td>;
|
const tree = renderer.create(
|
<Datetime renderYear={renderYear} />
|
).toJSON();
|
expect(tree).toMatchSnapshot();
|
});
|