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) =>
/**
* 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 {Number} numberOfYears number of years after
......@@ -408,7 +410,16 @@ export const nWeeksBefore = (date, numberOfWeeks, options) =>
*/
export const nYearsAfter = (date, numberOfYears) => {
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;
};
......
......@@ -785,11 +785,16 @@ describe('date addition/subtraction methods', () => {
);
});
// NOTE: 2024-02-29 is a leap day
describe('nYearsAfter', () => {
it.each`
date | numberOfYears | expected
${'2020-07-06'} | ${1} | ${'2021-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"',
({ date, numberOfYears, expected }) => {
......@@ -805,6 +810,10 @@ describe('date addition/subtraction methods', () => {
date | numberOfYears | expected
${'2020-07-06'} | ${4} | ${'2016-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"',
({ date, numberOfYears, expected }) => {
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册