diff --git a/test/components/date-picker-calendar.spec.tsx b/test/components/date-picker-calendar.spec.tsx
new file mode 100644
index 000000000..01c5356f3
--- /dev/null
+++ b/test/components/date-picker-calendar.spec.tsx
@@ -0,0 +1,203 @@
+import * as keycode from 'keycode';
+import * as React from 'react';
+import {ClientRenderer, expect} from 'test-drive-react';
+import {DatePicker} from '../../src';
+import {getDayNames} from '../../src/utils';
+import {DatePickerTestDriver} from '../../test-kit';
+
+describe('', () => {
+ const clientRenderer = new ClientRenderer();
+ afterEach(() => clientRenderer.cleanup());
+
+ const JANUARY_FIRST = new Date(2017, 0, 1);
+ const FEBRUARY_FIRST = new Date(2017, 1, 1);
+ const MARCH_FIRST = new Date(2017, 2, 1);
+ const DECEMBER_FIRST = new Date(2017, 11, 1);
+
+ const dayNames = getDayNames();
+ const days: string[] = [
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '10',
+ '11', '12', '13', '14', '15', '16', '17', '18', '19',
+ '20', '21', '22', '23', '24', '25', '26', '27', '28'
+ ];
+
+ it('should display the days for a fixed month', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render(
+
+ ).withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => {
+ dayNames.forEach((dayName, index) => expect(datePicker.getDayName(index)).to.have.text(dayName));
+ days.forEach(day => expect(datePicker.getDay(day)).to.have.text(day));
+ });
+ });
+
+ it('should show the next and previous month buttons horizontally aligned with the month and year', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render(
+
+ ).withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => {
+ const headerContents = [
+ datePicker.prevMonthLabel,
+ datePicker.monthLabel,
+ datePicker.yearLabel,
+ datePicker.nextMonthLabel
+ ];
+ expect(headerContents).to.be.verticallyAligned('center', 1);
+ });
+ });
+
+ it('should display the day names in horizontal sequence, and vertically aligned', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render(
+
+ ).withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => {
+ const dayNameElements = dayNames.map((name, index) => {
+ return datePicker.getDayName(index);
+ });
+
+ expect(dayNameElements).to.be.inHorizontalSequence();
+ expect(dayNameElements).to.be.verticallyAligned('center', 1.5);
+ });
+ });
+
+ it('should display the days in a grid', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render(
+
+ ).withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => {
+ const firstRow = [];
+ const firstColumn = [];
+
+ for (let i = 1; i < 7; i++) {
+ firstRow.push(datePicker.getDay(i));
+ }
+
+ for (let i = 1; i <= 5; i++) {
+ firstColumn.push(datePicker.getDay((7 * (i - 1)) + 1));
+ }
+
+ // Check that the days are displayed in rows (checking that each row is in horizontal sequence
+ expect(firstRow).to.be.inHorizontalSequence();
+ expect(firstRow).to.be.verticallyAligned('center');
+
+ // Check that the days are displayed in columns
+ expect(firstColumn).to.be.inVerticalSequence();
+ expect(firstColumn).to.be.horizontallyAligned('center');
+ });
+ });
+
+ it('should show the days starting on the correct day of the week', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render(
+
+ ).withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => expect([
+ datePicker.getDay(1),
+ datePicker.getDayName(3)
+ ]).to.be.horizontallyAligned('center'));
+ });
+
+ it('should show the trailing days from the last and next months', () => {
+ const {driver: datePicker} = clientRenderer.render()
+ .withDriver(DatePickerTestDriver);
+
+ expect(datePicker.getPrevDay(26)).to.be.present();
+ expect(datePicker.getPrevDay(27)).to.be.present();
+ expect(datePicker.getPrevDay(28)).to.be.present();
+ expect(datePicker.getNextDay(1)).to.be.present();
+
+ });
+
+ it('displays the year', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render(
+
+ ).withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => expect(datePicker.yearLabel).to.have.text('2017'));
+ });
+
+ it('displays the name of the month', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render(
+
+ ).withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => expect(datePicker.monthLabel).to.have.text('January'));
+ });
+
+ it('has a button which steps forward a month', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render(
+
+ ).withDriver(DatePickerTestDriver);
+
+ expect(datePicker.yearLabel).to.have.text('2017');
+ expect(datePicker.monthLabel).to.have.text('December');
+ datePicker.clickOnNextMonth();
+
+ await waitForDom(() => {
+ expect(datePicker.yearLabel).to.have.text('2018');
+ expect(datePicker.monthLabel).to.have.text('January');
+ });
+ });
+
+ it('has a button which steps back a month', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render(
+
+ ).withDriver(DatePickerTestDriver);
+
+ expect(datePicker.yearLabel).to.have.text('2017');
+ expect(datePicker.monthLabel).to.have.text('January');
+ datePicker.clickOnPrevMonth();
+
+ await waitForDom(() => {
+ expect(datePicker.yearLabel).to.have.text('2016');
+ expect(datePicker.monthLabel).to.have.text('December');
+ });
+ });
+
+ it('should stay open when the next or previous month buttons are clicked', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render()
+ .withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => expect(datePicker.dropDown).to.be.present());
+
+ datePicker.clickOnPrevMonth();
+
+ await waitForDom(() => expect(datePicker.dropDown).to.be.present());
+
+ datePicker.clickOnNextMonth();
+
+ await waitForDom(() => expect(datePicker.dropDown).to.be.present());
+ });
+
+ it('should appear when the Enter key is pressed and the openOnFocus property is set to false', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render()
+ .withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => expect(datePicker.dropDown).to.be.absent());
+
+ datePicker.keyPress(keycode('enter'));
+
+ await waitForDom(() => expect(datePicker.dropDown).to.be.present());
+ });
+
+ it('should appear when the Spacebar is pressed and the openOnFocus property is set to false', async () => {
+ const {driver: datePicker, waitForDom} = clientRenderer.render()
+ .withDriver(DatePickerTestDriver);
+
+ await waitForDom(() => expect(datePicker.dropDown).to.be.absent());
+
+ datePicker.keyPress(keycode('space'));
+
+ await waitForDom(() => expect(datePicker.dropDown).to.be.present());
+ });
+});
diff --git a/test/components/date-picker-helpers.spec.tsx b/test/components/date-picker-helpers.spec.tsx
new file mode 100644
index 000000000..b56ede5f4
--- /dev/null
+++ b/test/components/date-picker-helpers.spec.tsx
@@ -0,0 +1,131 @@
+import {expect} from 'test-drive-react';
+import {
+ getDaysInMonth,
+ getMonthFromOffset,
+ getNumOfFollowingDays,
+ getNumOfPreviousDays
+} from '../../src/utils';
+
+describe('Date Helper Functions', () => {
+ it('getMonthFromOffset should return the next month when the second argument is 1', () => {
+ const date = new Date('Mar 6 2017');
+ const nextMonth = getMonthFromOffset(date, 1);
+
+ expect(nextMonth.getMonth()).to.equal(date.getMonth() + 1);
+ });
+
+ it('getMonthFromOffset should return the previous month when the second argument is -1', () => {
+ const date = new Date('Mar 6 2017');
+ const nextMonth = getMonthFromOffset(date, -1);
+
+ expect(nextMonth.getMonth()).to.equal(date.getMonth() - 1);
+ });
+
+ it('getMonthFromOffset should handle the year changing when moving forward a month', () => {
+ const date = new Date('Dec 6 2016');
+ const nextMonth = getMonthFromOffset(date, 1);
+
+ expect(nextMonth.getFullYear()).to.equal(date.getFullYear() + 1);
+ expect(nextMonth.getMonth()).to.equal(0);
+ });
+
+ it('getMonthFromOffset should handle the year changing when moving back a month', () => {
+ const date = new Date('Jan 6 2018');
+ const nextMonth = getMonthFromOffset(date, -1);
+
+ expect(nextMonth.getFullYear()).to.equal(date.getFullYear() - 1);
+ expect(nextMonth.getMonth()).to.equal(11);
+ });
+
+ it('getDaysInMonth should return the number of days in a given month', () => {
+ expect(getDaysInMonth(new Date('Feb 18 2017'))).to.equal(28);
+ expect(getDaysInMonth(new Date('Jun 5 2016'))).to.equal(30);
+ expect(getDaysInMonth(new Date('Jan 28, 2017'))).to.equal(31);
+ });
+
+ it('getNumOfPreviousDays should return the number of days to display for the previous month', () => {
+ // Sunday is the default starting day
+ expect(getNumOfPreviousDays(new Date('Feb 18 2017'))).to.equal(3);
+ expect(getNumOfPreviousDays(new Date('Jun 5 2017'))).to.equal(4);
+ expect(getNumOfPreviousDays(new Date('July 5 2017'))).to.equal(6);
+ expect(getNumOfPreviousDays(new Date('September 5 2019'))).to.equal(0);
+ });
+
+ it('getNumOfPreviousDays should handle starting on different days of the week', () => {
+ const dateToTest = new Date('July 5 2017');
+ const secondDateToTest = new Date('September 5 2017');
+ const thirdDateToTest = new Date('October 5 2017');
+ const fourthDateToTest = new Date('August 5 2019');
+
+ expect(getNumOfPreviousDays(dateToTest, 1), 'Wrong number of days for Monday').to.equal(5);
+ expect(getNumOfPreviousDays(dateToTest, 2), 'Wrong number of days for Tuesday').to.equal(4);
+ expect(getNumOfPreviousDays(dateToTest, 3), 'Wrong number of days for Wednesday').to.equal(3);
+ expect(getNumOfPreviousDays(dateToTest, 4), 'Wrong number of days for Thursday').to.equal(2);
+ expect(getNumOfPreviousDays(dateToTest, 5), 'Wrong number of days for Friday').to.equal(1);
+ expect(getNumOfPreviousDays(dateToTest, 6), 'Wrong number of days for Saturday').to.equal(0);
+
+ expect(getNumOfPreviousDays(secondDateToTest, 1), 'Wrong number of days for Monday').to.equal(4);
+ expect(getNumOfPreviousDays(secondDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(3);
+ expect(getNumOfPreviousDays(secondDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(2);
+ expect(getNumOfPreviousDays(secondDateToTest, 4), 'Wrong number of days for Thursday').to.equal(1);
+ expect(getNumOfPreviousDays(secondDateToTest, 5), 'Wrong number of days for Friday').to.equal(0);
+ expect(getNumOfPreviousDays(secondDateToTest, 6), 'Wrong number of days for Saturday').to.equal(6);
+
+ expect(getNumOfPreviousDays(thirdDateToTest, 1), 'Wrong number of days for Monday').to.equal(6);
+ expect(getNumOfPreviousDays(thirdDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(5);
+ expect(getNumOfPreviousDays(thirdDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(4);
+ expect(getNumOfPreviousDays(thirdDateToTest, 4), 'Wrong number of days for Thursday').to.equal(3);
+ expect(getNumOfPreviousDays(thirdDateToTest, 5), 'Wrong number of days for Friday').to.equal(2);
+ expect(getNumOfPreviousDays(thirdDateToTest, 6), 'Wrong number of days for Saturday').to.equal(1);
+
+ expect(getNumOfPreviousDays(fourthDateToTest, 1), 'Wrong number of days for Monday').to.equal(3);
+ expect(getNumOfPreviousDays(fourthDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(2);
+ expect(getNumOfPreviousDays(fourthDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(1);
+ expect(getNumOfPreviousDays(fourthDateToTest, 4), 'Wrong number of days for Thursday').to.equal(0);
+ expect(getNumOfPreviousDays(fourthDateToTest, 5), 'Wrong number of days for Friday').to.equal(6);
+ expect(getNumOfPreviousDays(fourthDateToTest, 6), 'Wrong number of days for Saturday').to.equal(5);
+ });
+
+ it('getNumOfFollowingDays should return the number of days to display for the next month', () => {
+ // Sunday is the default starting day
+ expect(getNumOfFollowingDays(new Date('Feb 18 2017'))).to.equal(4);
+ expect(getNumOfFollowingDays(new Date('Jun 5 2017'))).to.equal(1);
+ expect(getNumOfFollowingDays(new Date('July 5 2017'))).to.equal(5);
+ expect(getNumOfFollowingDays(new Date('September 5 2019'))).to.equal(5);
+ });
+
+ it('getNumOfFollowingDays should handle starting on different days of the week', () => {
+ const dateToTest = new Date('July 5 2017');
+ const secondDateToTest = new Date('September 5 2017');
+ const thirdDateToTest = new Date('October 5 2017');
+ const fourthDateToTest = new Date('August 5 2019');
+
+ expect(getNumOfFollowingDays(dateToTest, 1), 'Wrong number of days for Monday').to.equal(6);
+ expect(getNumOfFollowingDays(dateToTest, 2), 'Wrong number of days for Tuesday').to.equal(0);
+ expect(getNumOfFollowingDays(dateToTest, 3), 'Wrong number of days for Wednesday').to.equal(1);
+ expect(getNumOfFollowingDays(dateToTest, 4), 'Wrong number of days for Thursday').to.equal(2);
+ expect(getNumOfFollowingDays(dateToTest, 5), 'Wrong number of days for Friday').to.equal(3);
+ expect(getNumOfFollowingDays(dateToTest, 6), 'Wrong number of days for Saturday').to.equal(4);
+
+ expect(getNumOfFollowingDays(secondDateToTest, 1), 'Wrong number of days for Monday').to.equal(1);
+ expect(getNumOfFollowingDays(secondDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(2);
+ expect(getNumOfFollowingDays(secondDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(3);
+ expect(getNumOfFollowingDays(secondDateToTest, 4), 'Wrong number of days for Thursday').to.equal(4);
+ expect(getNumOfFollowingDays(secondDateToTest, 5), 'Wrong number of days for Friday').to.equal(5);
+ expect(getNumOfFollowingDays(secondDateToTest, 6), 'Wrong number of days for Saturday').to.equal(6);
+
+ expect(getNumOfFollowingDays(thirdDateToTest, 1), 'Wrong number of days for Monday').to.equal(5);
+ expect(getNumOfFollowingDays(thirdDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(6);
+ expect(getNumOfFollowingDays(thirdDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(0);
+ expect(getNumOfFollowingDays(thirdDateToTest, 4), 'Wrong number of days for Thursday').to.equal(1);
+ expect(getNumOfFollowingDays(thirdDateToTest, 5), 'Wrong number of days for Friday').to.equal(2);
+ expect(getNumOfFollowingDays(thirdDateToTest, 6), 'Wrong number of days for Saturday').to.equal(3);
+
+ expect(getNumOfFollowingDays(fourthDateToTest, 1), 'Wrong number of days for Monday').to.equal(1);
+ expect(getNumOfFollowingDays(fourthDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(2);
+ expect(getNumOfFollowingDays(fourthDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(3);
+ expect(getNumOfFollowingDays(fourthDateToTest, 4), 'Wrong number of days for Thursday').to.equal(4);
+ expect(getNumOfFollowingDays(fourthDateToTest, 5), 'Wrong number of days for Friday').to.equal(5);
+ expect(getNumOfFollowingDays(fourthDateToTest, 6), 'Wrong number of days for Saturday').to.equal(6);
+ });
+});
diff --git a/test/components/date-picker.spec.tsx b/test/components/date-picker.spec.tsx
index 8575d2ad3..411426c54 100644
--- a/test/components/date-picker.spec.tsx
+++ b/test/components/date-picker.spec.tsx
@@ -3,13 +3,6 @@ import * as React from 'react';
import {ClientRenderer, DriverBase, expect, sinon, waitFor} from 'test-drive-react';
import {DatePickerDemo} from '../../demo/components/date-picker-demo';
import {DatePicker} from '../../src';
-import {
- getDayNames,
- getDaysInMonth,
- getMonthFromOffset,
- getNumOfFollowingDays,
- getNumOfPreviousDays
-} from '../../src/utils';
import {DatePickerTestDriver} from '../../test-kit';
import {sleep} from '../utils';
@@ -22,14 +15,12 @@ class DatePickerDemoDriver extends DriverBase {
}
}
-describe('The DatePicker Component', () => {
+describe('', () => {
const clientRenderer = new ClientRenderer();
afterEach(() => clientRenderer.cleanup());
const JANUARY_FIRST = new Date(2017, 0, 1);
const FEBRUARY_FIRST = new Date(2017, 1, 1);
- const MARCH_FIRST = new Date(2017, 2, 1);
- const DECEMBER_FIRST = new Date(2017, 11, 1);
describe('A Typical User', () => {
it('writes into the date picker input field, presses enter, ' +
@@ -293,317 +284,4 @@ describe('The DatePicker Component', () => {
expect(onChange).to.have.not.been.called;
});
});
-
- describe('The Dropdown', () => {
- const dayNames = getDayNames();
- const days: string[] = [
- '1', '2', '3', '4', '5', '6', '7', '8', '9', '10',
- '11', '12', '13', '14', '15', '16', '17', '18', '19',
- '20', '21', '22', '23', '24', '25', '26', '27', '28'
- ];
-
- it('should display the days for a fixed month', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render(
-
- ).withDriver(DatePickerTestDriver);
-
- await waitForDom(() => {
- dayNames.forEach((dayName, index) => expect(datePicker.getDayName(index)).to.have.text(dayName));
- days.forEach(day => expect(datePicker.getDay(day)).to.have.text(day));
- });
- });
-
- it('should show the next and previous month buttons horizontally aligned with the month and year', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render(
-
- ).withDriver(DatePickerTestDriver);
-
- await waitForDom(() => {
- const headerContents = [
- datePicker.prevMonthLabel,
- datePicker.monthLabel,
- datePicker.yearLabel,
- datePicker.nextMonthLabel
- ];
- expect(headerContents).to.be.verticallyAligned('center', 1);
- });
- });
-
- it('should display the day names in horizontal sequence, and vertically aligned', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render(
-
- ).withDriver(DatePickerTestDriver);
-
- await waitForDom(() => {
- const dayNameElements = dayNames.map((name, index) => {
- return datePicker.getDayName(index);
- });
-
- expect(dayNameElements).to.be.inHorizontalSequence();
- expect(dayNameElements).to.be.verticallyAligned('center', 1.5);
- });
- });
-
- it('should display the days in a grid', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render(
-
- ).withDriver(DatePickerTestDriver);
-
- await waitForDom(() => {
- const firstRow = [];
- const firstColumn = [];
-
- for (let i = 1; i < 7; i++) {
- firstRow.push(datePicker.getDay(i));
- }
-
- for (let i = 1; i <= 5; i++) {
- firstColumn.push(datePicker.getDay((7 * (i - 1)) + 1));
- }
-
- // Check that the days are displayed in rows (checking that each row is in horizontal sequence
- expect(firstRow).to.be.inHorizontalSequence();
- expect(firstRow).to.be.verticallyAligned('center');
-
- // Check that the days are displayed in columns
- expect(firstColumn).to.be.inVerticalSequence();
- expect(firstColumn).to.be.horizontallyAligned('center');
- });
- });
-
- it('should show the days starting on the correct day of the week', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render(
-
- ).withDriver(DatePickerTestDriver);
-
- await waitForDom(() => expect([
- datePicker.getDay(1),
- datePicker.getDayName(3)
- ]).to.be.horizontallyAligned('center'));
- });
-
- it('should show the trailing days from the last and next months', () => {
- const {driver: datePicker} = clientRenderer.render()
- .withDriver(DatePickerTestDriver);
-
- expect(datePicker.getPrevDay(26)).to.be.present();
- expect(datePicker.getPrevDay(27)).to.be.present();
- expect(datePicker.getPrevDay(28)).to.be.present();
- expect(datePicker.getNextDay(1)).to.be.present();
-
- });
-
- it('displays the year', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render(
-
- ).withDriver(DatePickerTestDriver);
-
- await waitForDom(() => expect(datePicker.yearLabel).to.have.text('2017'));
- });
-
- it('displays the name of the month', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render(
-
- ).withDriver(DatePickerTestDriver);
-
- await waitForDom(() => expect(datePicker.monthLabel).to.have.text('January'));
- });
-
- it('has a button which steps forward a month', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render(
-
- ).withDriver(DatePickerTestDriver);
-
- expect(datePicker.yearLabel).to.have.text('2017');
- expect(datePicker.monthLabel).to.have.text('December');
- datePicker.clickOnNextMonth();
-
- await waitForDom(() => {
- expect(datePicker.yearLabel).to.have.text('2018');
- expect(datePicker.monthLabel).to.have.text('January');
- });
- });
-
- it('has a button which steps back a month', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render(
-
- ).withDriver(DatePickerTestDriver);
-
- expect(datePicker.yearLabel).to.have.text('2017');
- expect(datePicker.monthLabel).to.have.text('January');
- datePicker.clickOnPrevMonth();
-
- await waitForDom(() => {
- expect(datePicker.yearLabel).to.have.text('2016');
- expect(datePicker.monthLabel).to.have.text('December');
- });
- });
-
- it('should stay open when the next or previous month buttons are clicked', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render()
- .withDriver(DatePickerTestDriver);
-
- await waitForDom(() => expect(datePicker.dropDown).to.be.present());
-
- datePicker.clickOnPrevMonth();
-
- await waitForDom(() => expect(datePicker.dropDown).to.be.present());
-
- datePicker.clickOnNextMonth();
-
- await waitForDom(() => expect(datePicker.dropDown).to.be.present());
- });
-
- it('should appear when the Enter key is pressed and the openOnFocus property is set to false', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render()
- .withDriver(DatePickerTestDriver);
-
- await waitForDom(() => expect(datePicker.dropDown).to.be.absent());
-
- datePicker.keyPress(keycode('enter'));
-
- await waitForDom(() => expect(datePicker.dropDown).to.be.present());
- });
-
- it('should appear when the Spacebar is pressed and the openOnFocus property is set to false', async () => {
- const {driver: datePicker, waitForDom} = clientRenderer.render()
- .withDriver(DatePickerTestDriver);
-
- await waitForDom(() => expect(datePicker.dropDown).to.be.absent());
-
- datePicker.keyPress(keycode('space'));
-
- await waitForDom(() => expect(datePicker.dropDown).to.be.present());
- });
- });
-
- describe('The Helper Functions', () => {
- it('getMonthFromOffset should return the next month when the second argument is 1', () => {
- const date = new Date('Mar 6 2017');
- const nextMonth = getMonthFromOffset(date, 1);
-
- expect(nextMonth.getMonth()).to.equal(date.getMonth() + 1);
- });
-
- it('getMonthFromOffset should return the previous month when the second argument is -1', () => {
- const date = new Date('Mar 6 2017');
- const nextMonth = getMonthFromOffset(date, -1);
-
- expect(nextMonth.getMonth()).to.equal(date.getMonth() - 1);
- });
-
- it('getMonthFromOffset should handle the year changing when moving forward a month', () => {
- const date = new Date('Dec 6 2016');
- const nextMonth = getMonthFromOffset(date, 1);
-
- expect(nextMonth.getFullYear()).to.equal(date.getFullYear() + 1);
- expect(nextMonth.getMonth()).to.equal(0);
- });
-
- it('getMonthFromOffset should handle the year changing when moving back a month', () => {
- const date = new Date('Jan 6 2018');
- const nextMonth = getMonthFromOffset(date, -1);
-
- expect(nextMonth.getFullYear()).to.equal(date.getFullYear() - 1);
- expect(nextMonth.getMonth()).to.equal(11);
- });
-
- it('getDaysInMonth should return the number of days in a given month', () => {
- expect(getDaysInMonth(new Date('Feb 18 2017'))).to.equal(28);
- expect(getDaysInMonth(new Date('Jun 5 2016'))).to.equal(30);
- expect(getDaysInMonth(new Date('Jan 28, 2017'))).to.equal(31);
- });
-
- it('getNumOfPreviousDays should return the number of days to display for the previous month', () => {
- // Sunday is the default starting day
- expect(getNumOfPreviousDays(new Date('Feb 18 2017'))).to.equal(3);
- expect(getNumOfPreviousDays(new Date('Jun 5 2017'))).to.equal(4);
- expect(getNumOfPreviousDays(new Date('July 5 2017'))).to.equal(6);
- expect(getNumOfPreviousDays(new Date('September 5 2019'))).to.equal(0);
- });
-
- it('getNumOfPreviousDays should handle starting on different days of the week', () => {
- const dateToTest = new Date('July 5 2017');
- const secondDateToTest = new Date('September 5 2017');
- const thirdDateToTest = new Date('October 5 2017');
- const fourthDateToTest = new Date('August 5 2019');
-
- expect(getNumOfPreviousDays(dateToTest, 1), 'Wrong number of days for Monday').to.equal(5);
- expect(getNumOfPreviousDays(dateToTest, 2), 'Wrong number of days for Tuesday').to.equal(4);
- expect(getNumOfPreviousDays(dateToTest, 3), 'Wrong number of days for Wednesday').to.equal(3);
- expect(getNumOfPreviousDays(dateToTest, 4), 'Wrong number of days for Thursday').to.equal(2);
- expect(getNumOfPreviousDays(dateToTest, 5), 'Wrong number of days for Friday').to.equal(1);
- expect(getNumOfPreviousDays(dateToTest, 6), 'Wrong number of days for Saturday').to.equal(0);
-
- expect(getNumOfPreviousDays(secondDateToTest, 1), 'Wrong number of days for Monday').to.equal(4);
- expect(getNumOfPreviousDays(secondDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(3);
- expect(getNumOfPreviousDays(secondDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(2);
- expect(getNumOfPreviousDays(secondDateToTest, 4), 'Wrong number of days for Thursday').to.equal(1);
- expect(getNumOfPreviousDays(secondDateToTest, 5), 'Wrong number of days for Friday').to.equal(0);
- expect(getNumOfPreviousDays(secondDateToTest, 6), 'Wrong number of days for Saturday').to.equal(6);
-
- expect(getNumOfPreviousDays(thirdDateToTest, 1), 'Wrong number of days for Monday').to.equal(6);
- expect(getNumOfPreviousDays(thirdDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(5);
- expect(getNumOfPreviousDays(thirdDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(4);
- expect(getNumOfPreviousDays(thirdDateToTest, 4), 'Wrong number of days for Thursday').to.equal(3);
- expect(getNumOfPreviousDays(thirdDateToTest, 5), 'Wrong number of days for Friday').to.equal(2);
- expect(getNumOfPreviousDays(thirdDateToTest, 6), 'Wrong number of days for Saturday').to.equal(1);
-
- expect(getNumOfPreviousDays(fourthDateToTest, 1), 'Wrong number of days for Monday').to.equal(3);
- expect(getNumOfPreviousDays(fourthDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(2);
- expect(getNumOfPreviousDays(fourthDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(1);
- expect(getNumOfPreviousDays(fourthDateToTest, 4), 'Wrong number of days for Thursday').to.equal(0);
- expect(getNumOfPreviousDays(fourthDateToTest, 5), 'Wrong number of days for Friday').to.equal(6);
- expect(getNumOfPreviousDays(fourthDateToTest, 6), 'Wrong number of days for Saturday').to.equal(5);
- });
-
- it('getNumOfFollowingDays should return the number of days to display for the next month', () => {
- // Sunday is the default starting day
- expect(getNumOfFollowingDays(new Date('Feb 18 2017'))).to.equal(4);
- expect(getNumOfFollowingDays(new Date('Jun 5 2017'))).to.equal(1);
- expect(getNumOfFollowingDays(new Date('July 5 2017'))).to.equal(5);
- expect(getNumOfFollowingDays(new Date('September 5 2019'))).to.equal(5);
- });
-
- it('getNumOfFollowingDays should handle starting on different days of the week', () => {
- const dateToTest = new Date('July 5 2017');
- const secondDateToTest = new Date('September 5 2017');
- const thirdDateToTest = new Date('October 5 2017');
- const fourthDateToTest = new Date('August 5 2019');
-
- expect(getNumOfFollowingDays(dateToTest, 1), 'Wrong number of days for Monday').to.equal(6);
- expect(getNumOfFollowingDays(dateToTest, 2), 'Wrong number of days for Tuesday').to.equal(0);
- expect(getNumOfFollowingDays(dateToTest, 3), 'Wrong number of days for Wednesday').to.equal(1);
- expect(getNumOfFollowingDays(dateToTest, 4), 'Wrong number of days for Thursday').to.equal(2);
- expect(getNumOfFollowingDays(dateToTest, 5), 'Wrong number of days for Friday').to.equal(3);
- expect(getNumOfFollowingDays(dateToTest, 6), 'Wrong number of days for Saturday').to.equal(4);
-
- expect(getNumOfFollowingDays(secondDateToTest, 1), 'Wrong number of days for Monday').to.equal(1);
- expect(getNumOfFollowingDays(secondDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(2);
- expect(getNumOfFollowingDays(secondDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(3);
- expect(getNumOfFollowingDays(secondDateToTest, 4), 'Wrong number of days for Thursday').to.equal(4);
- expect(getNumOfFollowingDays(secondDateToTest, 5), 'Wrong number of days for Friday').to.equal(5);
- expect(getNumOfFollowingDays(secondDateToTest, 6), 'Wrong number of days for Saturday').to.equal(6);
-
- expect(getNumOfFollowingDays(thirdDateToTest, 1), 'Wrong number of days for Monday').to.equal(5);
- expect(getNumOfFollowingDays(thirdDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(6);
- expect(getNumOfFollowingDays(thirdDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(0);
- expect(getNumOfFollowingDays(thirdDateToTest, 4), 'Wrong number of days for Thursday').to.equal(1);
- expect(getNumOfFollowingDays(thirdDateToTest, 5), 'Wrong number of days for Friday').to.equal(2);
- expect(getNumOfFollowingDays(thirdDateToTest, 6), 'Wrong number of days for Saturday').to.equal(3);
-
- expect(getNumOfFollowingDays(fourthDateToTest, 1), 'Wrong number of days for Monday').to.equal(1);
- expect(getNumOfFollowingDays(fourthDateToTest, 2), 'Wrong number of days for Tuesday').to.equal(2);
- expect(getNumOfFollowingDays(fourthDateToTest, 3), 'Wrong number of days for Wednesday').to.equal(3);
- expect(getNumOfFollowingDays(fourthDateToTest, 4), 'Wrong number of days for Thursday').to.equal(4);
- expect(getNumOfFollowingDays(fourthDateToTest, 5), 'Wrong number of days for Friday').to.equal(5);
- expect(getNumOfFollowingDays(fourthDateToTest, 6), 'Wrong number of days for Saturday').to.equal(6);
- });
- });
});