forked from date-fns/date-fns
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
migrate setUTCDay to TS (date-fns#2681)
- Loading branch information
Showing
6 changed files
with
253 additions
and
234 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
// @flow | ||
/* eslint-env mocha */ | ||
|
||
import assert from 'assert' | ||
import { Locale } from '../../locale/types' | ||
import setUTCDay from '.' | ||
|
||
describe('setUTCDay', () => { | ||
it('sets the day of the week', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31))) | ||
}) | ||
|
||
it('allows to specify which day is the first day of the week', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0, { | ||
weekStartsOn: 1, | ||
}) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 7))) | ||
}) | ||
|
||
it('allows to specify which day is the first day of the week in locale', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0, { | ||
locale: { | ||
options: { weekStartsOn: 1 }, | ||
} as Locale, | ||
}) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 7))) | ||
}) | ||
|
||
it('`options.weekStartsOn` overwrites the first day of the week specified in locale', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0, { | ||
weekStartsOn: 1, | ||
locale: { | ||
options: { weekStartsOn: 0 }, | ||
} as Locale, | ||
}) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 7))) | ||
}) | ||
|
||
describe('the day index is more than 6', () => { | ||
it('sets the day of the next week', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 8) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 8))) | ||
}) | ||
|
||
it('allows to specify which day is the first day of the week', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 7, { | ||
weekStartsOn: 1, | ||
}) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 14))) | ||
}) | ||
|
||
it('sets the day of another week in the future', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 14, { | ||
weekStartsOn: 1, | ||
}) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 21))) | ||
}) | ||
}) | ||
|
||
describe('the day index is less than 0', () => { | ||
it('sets the day of the last week', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), -6) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 25))) | ||
}) | ||
|
||
it('allows to specify which day is the first day of the week', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), -7, { | ||
weekStartsOn: 1, | ||
}) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31))) | ||
}) | ||
|
||
it('set the day of another week in the past', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), -14, { | ||
weekStartsOn: 1, | ||
}) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 24))) | ||
}) | ||
}) | ||
|
||
it('accepts a timestamp', () => { | ||
const result = setUTCDay( | ||
new Date(Date.UTC(2014, 8 /* Sep */, 1)).getTime(), | ||
3 | ||
) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 3))) | ||
}) | ||
|
||
it('converts a fractional number to an integer', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0.9) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31))) | ||
}) | ||
|
||
it('implicitly converts number arguments', () => { | ||
const result = setUTCDay( | ||
new Date(Date.UTC(2014, 8 /* Sep */, 1)), | ||
// @ts-expect-error | ||
'0' | ||
) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31))) | ||
}) | ||
|
||
it('implicitly converts options', () => { | ||
const result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0, { | ||
// @ts-expect-error | ||
weekStartsOn: '1', | ||
}) | ||
assert.deepStrictEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 7))) | ||
}) | ||
|
||
it('does not mutate the original date', () => { | ||
const date = new Date(Date.UTC(2014, 8 /* Sep */, 1)) | ||
setUTCDay(date, 3) | ||
assert.deepStrictEqual(date, new Date(Date.UTC(2014, 8 /* Sep */, 1))) | ||
}) | ||
|
||
it('returns `Invalid Date` if the given date is invalid', () => { | ||
const result = setUTCDay(new Date(NaN), 0) | ||
assert(result instanceof Date && isNaN(result.getTime())) | ||
}) | ||
|
||
it('returns `Invalid Date` if the given amount is NaN', () => { | ||
const result = setUTCDay(new Date(2014, 8 /* Sep */, 1), NaN) | ||
assert(result instanceof Date && isNaN(result.getTime())) | ||
}) | ||
|
||
it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', () => { | ||
const block = setUTCDay.bind(null, new Date(2014, 8 /* Sep */, 1), 0, { | ||
weekStartsOn: NaN as Day, | ||
}) | ||
assert.throws(block, RangeError) | ||
}) | ||
|
||
it('throws TypeError exception if passed less than 1 argument', () => { | ||
//@ts-expect-error | ||
assert.throws(setUTCDay.bind(null, 1), TypeError) | ||
}) | ||
}) |
22 changes: 12 additions & 10 deletions
22
src/_lib/setUTCISODay/index.js → src/_lib/setUTCISODay/index.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.