Skip to content
代码片段 群组 项目
未验证 提交 c7ad229d 编辑于 作者: Illya Klymov's avatar Illya Klymov 提交者: GitLab
浏览文件

Merge branch 'ek-follow-up-additional-datetime-jest-tests' into 'master'

Add additional test cases for a leap year

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139171



Merged-by: default avatarIllya Klymov <xanf@xanf.me>
Approved-by: default avatarDeepika Guliani <dguliani@gitlab.com>
Co-authored-by: default avatarEzekiel Kigbo <ekigbo@gitlab.com>
No related branches found
No related tags found
无相关合并请求
...@@ -401,6 +401,8 @@ export const nWeeksBefore = (date, numberOfWeeks, options) => ...@@ -401,6 +401,8 @@ export const nWeeksBefore = (date, numberOfWeeks, options) =>
/** /**
* Returns the date `n` years after the date provided. * Returns the date `n` years after the date provided.
* When Feb 29 is the specified date, the default behaviour is to return March 1.
* But to align with the equivalent rails code, moment JS and datefns we should return Feb 28 instead.
* *
* @param {Date} date the initial date * @param {Date} date the initial date
* @param {Number} numberOfYears number of years after * @param {Number} numberOfYears number of years after
...@@ -408,7 +410,16 @@ export const nWeeksBefore = (date, numberOfWeeks, options) => ...@@ -408,7 +410,16 @@ export const nWeeksBefore = (date, numberOfWeeks, options) =>
*/ */
export const nYearsAfter = (date, numberOfYears) => { export const nYearsAfter = (date, numberOfYears) => {
const clone = newDate(date); const clone = newDate(date);
clone.setFullYear(clone.getFullYear() + numberOfYears); clone.setUTCMonth(clone.getUTCMonth());
// If the date we are calculating from is Feb 29, return the equivalent result for Feb 28
if (clone.getUTCMonth() === 1 && clone.getUTCDate() === 29) {
clone.setUTCDate(28);
} else {
clone.setUTCDate(clone.getUTCDate());
}
clone.setUTCFullYear(clone.getUTCFullYear() + numberOfYears);
return clone; return clone;
}; };
......
...@@ -785,11 +785,16 @@ describe('date addition/subtraction methods', () => { ...@@ -785,11 +785,16 @@ describe('date addition/subtraction methods', () => {
); );
}); });
// NOTE: 2024-02-29 is a leap day
describe('nYearsAfter', () => { describe('nYearsAfter', () => {
it.each` it.each`
date | numberOfYears | expected date | numberOfYears | expected
${'2020-07-06'} | ${1} | ${'2021-07-06'} ${'2020-07-06'} | ${1} | ${'2021-07-06'}
${'2020-07-06'} | ${15} | ${'2035-07-06'} ${'2020-07-06'} | ${15} | ${'2035-07-06'}
${'2024-03-02'} | ${1} | ${'2025-03-02'}
${'2024-03-01'} | ${1} | ${'2025-03-01'}
${'2024-02-29'} | ${1} | ${'2025-02-28'}
${'2024-02-28'} | ${1} | ${'2025-02-28'}
`( `(
'returns $expected for "$numberOfYears year(s) after $date"', 'returns $expected for "$numberOfYears year(s) after $date"',
({ date, numberOfYears, expected }) => { ({ date, numberOfYears, expected }) => {
...@@ -805,6 +810,10 @@ describe('date addition/subtraction methods', () => { ...@@ -805,6 +810,10 @@ describe('date addition/subtraction methods', () => {
date | numberOfYears | expected date | numberOfYears | expected
${'2020-07-06'} | ${4} | ${'2016-07-06'} ${'2020-07-06'} | ${4} | ${'2016-07-06'}
${'2020-07-06'} | ${1} | ${'2019-07-06'} ${'2020-07-06'} | ${1} | ${'2019-07-06'}
${'2024-03-02'} | ${1} | ${'2023-03-02'}
${'2024-03-01'} | ${1} | ${'2023-03-01'}
${'2024-02-29'} | ${1} | ${'2023-02-28'}
${'2024-02-28'} | ${1} | ${'2023-02-28'}
`( `(
'returns $expected for "$numberOfYears year(s) before $date"', 'returns $expected for "$numberOfYears year(s) before $date"',
({ date, numberOfYears, expected }) => { ({ date, numberOfYears, expected }) => {
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册