45 lines
1.8 KiB
JavaScript
45 lines
1.8 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
|
|
import {
|
|
calculateAgeFromDate,
|
|
calculateBirthDateFromAge,
|
|
isValidIsoDate
|
|
} from '../src/views/scripts/employeeManagementModel.js'
|
|
|
|
test('根据年龄反算未到生日的出生年份不会少一年', () => {
|
|
const referenceDate = new Date('2026-07-18T00:00:00')
|
|
const birthDate = calculateBirthDateFromAge('30', '1990-12-31', referenceDate)
|
|
|
|
assert.equal(birthDate, '1995-12-31')
|
|
assert.equal(calculateAgeFromDate(birthDate, referenceDate), '30')
|
|
})
|
|
|
|
test('根据年龄反算已过生日的出生年份保持当年差值', () => {
|
|
const referenceDate = new Date('2026-07-18T00:00:00')
|
|
const birthDate = calculateBirthDateFromAge('30', '1990-01-01', referenceDate)
|
|
|
|
assert.equal(birthDate, '1996-01-01')
|
|
assert.equal(calculateAgeFromDate(birthDate, referenceDate), '30')
|
|
})
|
|
|
|
test('零岁且生日月日尚未到来时不会生成未来出生日期', () => {
|
|
const referenceDate = new Date('2026-07-18T00:00:00')
|
|
const birthDate = calculateBirthDateFromAge('0', '2000-12-31', referenceDate)
|
|
|
|
assert.equal(birthDate, '2025-12-31')
|
|
assert.equal(isValidIsoDate(birthDate), true)
|
|
assert.equal(new Date(`${birthDate}T00:00:00`) <= referenceDate, true)
|
|
assert.equal(calculateAgeFromDate(birthDate, referenceDate), '0')
|
|
})
|
|
|
|
test('闰日生日跨非闰年时使用二月二十八日并保持年龄回算一致', () => {
|
|
const referenceDate = new Date('2024-03-01T00:00:00')
|
|
const birthDate = calculateBirthDateFromAge('23', '2000-02-29', referenceDate)
|
|
|
|
assert.equal(birthDate, '2001-02-28')
|
|
assert.equal(isValidIsoDate(birthDate), true)
|
|
assert.equal(calculateAgeFromDate(birthDate, referenceDate), '23')
|
|
assert.equal(calculateAgeFromDate('2000-02-29', new Date('2023-02-28T00:00:00')), '23')
|
|
})
|