diff --git a/src/DatePicker/DatePicker.test.js b/src/DatePicker/DatePicker.test.js
index f38690943..8de37d6f6 100644
--- a/src/DatePicker/DatePicker.test.js
+++ b/src/DatePicker/DatePicker.test.js
@@ -33,27 +33,25 @@ describe('', () => {
test('open/close calendar', () => {
wrapper = mount(defaultDatePicker);
+ // check to make sure calendar is hidden
expect(wrapper.state('hidden')).toBeTruthy();
+ // click to show calendar
wrapper.find('input[type="text"]').simulate('click', { type: 'input' });
+ // check to make sure calendar is shown
expect(wrapper.state('hidden')).toBeFalsy();
+ // clicking on input text should keep calendar displayed
wrapper.find('input[type="text"]').simulate('click', { type: 'input' });
+ // check to make sure calendar is shown
expect(wrapper.state('hidden')).toBeFalsy();
- wrapper.instance().componentWillMount();
-
- let event = new MouseEvent('mousedown', {
- target: document.querySelector('body')
- });
- document.dispatchEvent(event);
-
- expect(wrapper.state('hidden')).toBeTruthy();
-
+ // click to show calendar
wrapper.find('input[type="text"]').simulate('click', { type: '' });
+ // check to make sure calendar is shown
expect(wrapper.state('hidden')).toBeFalsy();
});
@@ -62,25 +60,33 @@ describe('', () => {
//open date picker calendar
expect(wrapper.state('hidden')).toBeTruthy();
+ // click to show calendar
wrapper.find('input[type="text"]').simulate('click', { type: 'input' });
+ // check to make sure calendar is shown
expect(wrapper.state('hidden')).toBeFalsy();
wrapper.instance().componentWillMount();
+ // click on body element
let event = new MouseEvent('mousedown', {
target: document.querySelector('body')
});
document.dispatchEvent(event);
+ // check to make sure calendar is hidden
expect(wrapper.state('hidden')).toBeTruthy();
// show date picker, select date range then close
wrapper.find('input[type="text"]').simulate('click', { type: '' });
+ // check to make sure calendar is shown
expect(wrapper.state('hidden')).toBeFalsy();
+ });
+ test('start date and end date range', () => {
wrapper = mount(rangeDatePicker);
+ // set dates
let startRangeDate = new Date();
let endRangeDate = new Date();
endRangeDate.setDate(endRangeDate.getDate() + 3);
@@ -88,8 +94,27 @@ describe('', () => {
let arrDates = [startRangeDate, endRangeDate];
wrapper.instance().updateDate(arrDates);
+ expect(wrapper.state('arrSelectedDates').length).toEqual(2);
+
+ // click on body element
+ let event = new MouseEvent('mousedown', {
+ target: document.querySelector('body')
+ });
document.dispatchEvent(event);
+ // check to make sure calendar is hidden
+ expect(wrapper.state('hidden')).toBeTruthy();
+ });
+
+ test('check start date greater than end date for range', () => {
+ wrapper = mount(rangeDatePicker);
+ // set dates
+ let startRangeDate = new Date();
+ let endRangeDate = new Date();
+ endRangeDate.setDate(endRangeDate.getDate() + 3);
+
+ let arrDates = [startRangeDate, endRangeDate];
+
// make start date bigger than end date
arrDates = [endRangeDate, startRangeDate];
wrapper.instance().updateDate(arrDates);
@@ -101,10 +126,37 @@ describe('', () => {
expect(wrapper.state('formattedDate')).toEqual(switchFormattedDate);
expect(wrapper.state('arrSelectedDates').length).toEqual(2);
+ // click on body element to hide calendar
+ let event = new MouseEvent('mousedown', {
+ target: document.querySelector('body')
+ });
document.dispatchEvent(event);
+
+ // check to make sure calendar is hidden
+ expect(wrapper.state('hidden')).toBeTruthy();
+ });
+
+ test('entering invalid range dates', () => {
+ wrapper = mount(rangeDatePicker);
+ // set dates
+ let startRangeDate = new Date();
+ let endRangeDate = new Date();
+ endRangeDate.setDate(endRangeDate.getDate() + 3);
+
+ let startDate = `${startRangeDate.getMonth() +
+ 1}/${startRangeDate.getDate()}/${startRangeDate.getFullYear()}`;
+ let endDate = `${endRangeDate.getMonth() +
+ 1}/${endRangeDate.getDate()}/${endRangeDate.getFullYear() + 4000}`;
+
+ wrapper.find('input[type="text"]')
+ .simulate('change', { target: { value: `${startDate}-${endDate}` } });
+
+ wrapper.find('input[type="text"]').simulate('keypress', { key: 'Enter' });
+
+ expect(wrapper.state('arrSelectedDates')).toEqual('undefined');
});
- test('update date method', () => {
+ test('updateDate method', () => {
// choose one day in default picker
wrapper = mount(defaultDatePicker);
const date = new Date();
@@ -143,7 +195,7 @@ describe('', () => {
expect(wrapper.state('arrSelectedDates').length).toEqual(2);
});
- test('enter date value', () => {
+ test('pressing enter key on date input', () => {
wrapper = mount(rangeDatePicker);
let startRangeDate = new Date();
@@ -175,20 +227,24 @@ describe('', () => {
wrapper.find('input[type="text"]').simulate('keypress', { key: 'Enter' });
+ expect(wrapper.state('formattedDate')).toBe('');
+ expect(wrapper.state('selectedDate')).toBe('undefined');
+ });
+
+ test('enter an invalid date string', () => {
wrapper = mount(defaultDatePicker);
let date = new Date();
- wrapper.instance().updateDate(date);
- expect(wrapper.state('selectedDate')).toEqual(date);
- formattedDate = `${date.getMonth() +
- 1}/${date.getDate()}/${date.getFullYear()}`;
- expect(wrapper.state('formattedDate')).toEqual(formattedDate);
+ let formattedDate = `${date.getMonth() +
+ 1}/${date.getDate()}/${date.getFullYear() + 4000}`;
+ wrapper.find('input[type="text"]')
+ .simulate('change', { target: { value: formattedDate } });
+
wrapper.find('input[type="text"]').simulate('keypress', { key: 'Enter' });
- // press Esc key
- wrapper.find('input[type="text"]').simulate('keypress', { key: 'Esc' });
+ expect(wrapper.state('selectedDate')).toEqual('undefined');
});
- test('format date', () => {
+ test('formatDate method', () => {
wrapper = mount(rangeDatePicker);
let startRangeDate = new Date();
let endRangeDate = new Date();
@@ -225,6 +281,28 @@ describe('', () => {
expect(wrapper.instance().formatDate(startRangeDate)).toEqual('');
});
+ test('enter text string for date', () => {
+ wrapper = mount(defaultDatePicker);
+
+ wrapper.find('input[type="text"]')
+ .simulate('change', { target: { value: 'May 14th, 2018' } });
+
+ wrapper.find('input[type="text"]').simulate('keypress', { key: 'Enter' });
+
+ expect(wrapper.state('formattedDate')).toEqual('');
+ });
+
+ test('enter text string for date on date range component', () => {
+ wrapper = mount(rangeDatePicker);
+
+ wrapper.find('input[type="text"]')
+ .simulate('change', { target: { value: 'May 14th, 2018-May 15th, 2018' } });
+
+ wrapper.find('input[type="text"]').simulate('keypress', { key: 'Enter' });
+
+ expect(wrapper.state('formattedDate')).toEqual('');
+ });
+
test('modify date on change', () => {
wrapper = mount(defaultDatePicker);
wrapper