Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate differenceInCalendarQuarters function #2420

Merged
merged 2 commits into from
May 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,16 @@ import requiredArgs from '../_lib/requiredArgs/index'
* //=> 3
*/
export default function differenceInCalendarQuarters(
dirtyDateLeft,
dirtyDateRight
) {
dirtyDateLeft: Date | number,
dirtyDateRight: Date | number
): number {
requiredArgs(2, arguments)

var dateLeft = toDate(dirtyDateLeft)
var dateRight = toDate(dirtyDateRight)
const dateLeft = toDate(dirtyDateLeft)
const dateRight = toDate(dirtyDateRight)

var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()
var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight)
const yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()
const quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight)

return yearDiff * 4 + quarterDiff
}
Original file line number Diff line number Diff line change
@@ -1,104 +1,103 @@
// @flow
/* eslint-env mocha */

import assert from 'power-assert'
import differenceInCalendarQuarters from '.'

describe('differenceInCalendarQuarters', function() {
it('returns the number of calendar quarters between the given dates', function() {
var result = differenceInCalendarQuarters(
describe('differenceInCalendarQuarters', function () {
it('returns the number of calendar quarters between the given dates', function () {
const result = differenceInCalendarQuarters(
new Date(2012, 6 /* Jul */, 2, 18, 0),
new Date(2011, 6 /* Jul */, 2, 6, 0)
)
assert(result === 4)
})

it('returns a negative number if the time value of the first date is smaller', function() {
var result = differenceInCalendarQuarters(
it('returns a negative number if the time value of the first date is smaller', function () {
const result = differenceInCalendarQuarters(
new Date(2011, 6 /* Jul */, 2, 6, 0),
new Date(2012, 6 /* Jul */, 2, 18, 0)
)
assert(result === -4)
})

it('accepts timestamps', function() {
var result = differenceInCalendarQuarters(
it('accepts timestamps', function () {
const result = differenceInCalendarQuarters(
new Date(2014, 9 /* Oct */, 2).getTime(),
new Date(2010, 6 /* Jul */, 2).getTime()
)
assert(result === 17)
})

describe('edge cases', function() {
it('the difference is less than a quarter, but the given dates are in different calendar quarters', function() {
var result = differenceInCalendarQuarters(
describe('edge cases', function () {
it('the difference is less than a quarter, but the given dates are in different calendar quarters', function () {
const result = differenceInCalendarQuarters(
new Date(2014, 6 /* Jul */, 1),
new Date(2014, 5 /* Jun */, 30)
)
assert(result === 1)
})

it('the same for the swapped dates', function() {
var result = differenceInCalendarQuarters(
it('the same for the swapped dates', function () {
const result = differenceInCalendarQuarters(
new Date(2014, 5 /* Jun */, 30),
new Date(2014, 6 /* Jul */, 1)
)
assert(result === -1)
})

it('the days of months of the given dates are the same', function() {
var result = differenceInCalendarQuarters(
it('the days of months of the given dates are the same', function () {
const result = differenceInCalendarQuarters(
new Date(2014, 3 /* Apr */, 6),
new Date(2014, 0 /* Jan */, 6)
)
assert(result === 1)
})

it('the given dates are the same', function() {
var result = differenceInCalendarQuarters(
it('the given dates are the same', function () {
const result = differenceInCalendarQuarters(
new Date(2014, 8 /* Sep */, 5, 0, 0),
new Date(2014, 8 /* Sep */, 5, 0, 0)
)
assert(result === 0)
})

it('does not return -0 when the given dates are the same', () => {
function isNegativeZero(x) {
function isNegativeZero(x: number): boolean {
return x === 0 && 1 / x < 0
}

var result = differenceInCalendarQuarters(
const result = differenceInCalendarQuarters(
new Date(2014, 8 /* Sep */, 5, 0, 0),
new Date(2014, 8 /* Sep */, 5, 0, 0)
)

var resultIsNegative = isNegativeZero(result)
const resultIsNegative = isNegativeZero(result)
assert(resultIsNegative === false)
})
})

it('returns NaN if the first date is `Invalid Date`', function() {
var result = differenceInCalendarQuarters(
it('returns NaN if the first date is `Invalid Date`', function () {
const result = differenceInCalendarQuarters(
new Date(NaN),
new Date(2017, 0 /* Jan */, 1)
)
assert(isNaN(result))
})

it('returns NaN if the second date is `Invalid Date`', function() {
var result = differenceInCalendarQuarters(
it('returns NaN if the second date is `Invalid Date`', function () {
const result = differenceInCalendarQuarters(
new Date(2017, 0 /* Jan */, 1),
new Date(NaN)
)
assert(isNaN(result))
})

it('returns NaN if the both dates are `Invalid Date`', function() {
var result = differenceInCalendarQuarters(new Date(NaN), new Date(NaN))
it('returns NaN if the both dates are `Invalid Date`', function () {
const result = differenceInCalendarQuarters(new Date(NaN), new Date(NaN))
assert(isNaN(result))
})

it('throws TypeError exception if passed less than 2 arguments', function() {
it('throws TypeError exception if passed less than 2 arguments', function () {
assert.throws(differenceInCalendarQuarters.bind(null), TypeError)
assert.throws(differenceInCalendarQuarters.bind(null, 1), TypeError)
})
Expand Down