From 3f6121b5240dc7446c5b98329bf511452ea733f7 Mon Sep 17 00:00:00 2001 From: Kieran Williams Date: Tue, 17 Oct 2017 13:51:31 +0300 Subject: [PATCH 1/2] Divided tests into three files based on scope --- test/components/date-picker-calendar.spec.tsx | 203 +++++++++++ test/components/date-picker-helpers.spec.tsx | 131 +++++++ test/components/date-picker.spec.tsx | 322 ------------------ 3 files changed, 334 insertions(+), 322 deletions(-) create mode 100644 test/components/date-picker-calendar.spec.tsx create mode 100644 test/components/date-picker-helpers.spec.tsx diff --git a/test/components/date-picker-calendar.spec.tsx b/test/components/date-picker-calendar.spec.tsx new file mode 100644 index 000000000..5e0599cc5 --- /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('The Dropdown', () => { + 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..e0d0ce7c6 --- /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('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); + }); +}); diff --git a/test/components/date-picker.spec.tsx b/test/components/date-picker.spec.tsx index f6702f372..3b79ae33c 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} 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'; @@ -28,8 +21,6 @@ describe('The DatePicker Component', () => { 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, ' + @@ -166,317 +157,4 @@ describe('The DatePicker Component', () => { await waitForDom(() => expect(datePicker.selectedDate).to.equal('Sun Jan 01 2017')); }); - - 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); - }); - }); }); From 352fc8819d460ef8a0d6cc185f8611d2da78e890 Mon Sep 17 00:00:00 2001 From: Kieran Williams Date: Tue, 17 Oct 2017 13:53:37 +0300 Subject: [PATCH 2/2] Improved describes --- test/components/date-picker-calendar.spec.tsx | 2 +- test/components/date-picker-helpers.spec.tsx | 2 +- test/components/date-picker.spec.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/components/date-picker-calendar.spec.tsx b/test/components/date-picker-calendar.spec.tsx index 5e0599cc5..01c5356f3 100644 --- a/test/components/date-picker-calendar.spec.tsx +++ b/test/components/date-picker-calendar.spec.tsx @@ -5,7 +5,7 @@ import {DatePicker} from '../../src'; import {getDayNames} from '../../src/utils'; import {DatePickerTestDriver} from '../../test-kit'; -describe('The Dropdown', () => { +describe('', () => { const clientRenderer = new ClientRenderer(); afterEach(() => clientRenderer.cleanup()); diff --git a/test/components/date-picker-helpers.spec.tsx b/test/components/date-picker-helpers.spec.tsx index e0d0ce7c6..b56ede5f4 100644 --- a/test/components/date-picker-helpers.spec.tsx +++ b/test/components/date-picker-helpers.spec.tsx @@ -6,7 +6,7 @@ import { getNumOfPreviousDays } from '../../src/utils'; -describe('The Helper Functions', () => { +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); diff --git a/test/components/date-picker.spec.tsx b/test/components/date-picker.spec.tsx index 3b79ae33c..506f5e531 100644 --- a/test/components/date-picker.spec.tsx +++ b/test/components/date-picker.spec.tsx @@ -15,7 +15,7 @@ class DatePickerDemoDriver extends DriverBase { } } -describe('The DatePicker Component', () => { +describe('', () => { const clientRenderer = new ClientRenderer(); afterEach(() => clientRenderer.cleanup());