mirror of
https://gitee.com/mirrors/AllinSSL.git
synced 2026-03-15 19:02:01 +08:00
【初始化】前端工程项目
This commit is contained in:
123
frontend/packages/utils/test/date.spec.ts
Normal file
123
frontend/packages/utils/test/date.spec.ts
Normal file
@@ -0,0 +1,123 @@
|
||||
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
|
||||
import * as dateUtils from '../src/date'
|
||||
|
||||
describe('日期处理工具函数测试', () => {
|
||||
describe('formatDate', () => {
|
||||
it('应当正确格式化日期字符串', () => {
|
||||
const date = new Date('2024-02-27 14:30:45')
|
||||
expect(dateUtils.formatDate(date)).toBe('2024-02-27 14:30:45')
|
||||
expect(dateUtils.formatDate(date, 'YYYY-MM-DD')).toBe('2024-02-27')
|
||||
expect(dateUtils.formatDate(date, 'HH:mm:ss')).toBe('14:30:45')
|
||||
})
|
||||
|
||||
it('应当正确处理单位数的月日时分秒', () => {
|
||||
const date = new Date('2024-01-05 09:05:08')
|
||||
expect(dateUtils.formatDate(date)).toBe('2024-01-05 09:05:08')
|
||||
})
|
||||
})
|
||||
|
||||
describe('getDaysDiff', () => {
|
||||
it('应当正确计算两个日期之间的天数差', () => {
|
||||
const start = new Date('2024-02-27')
|
||||
const end = new Date('2024-03-01')
|
||||
expect(dateUtils.getDaysDiff(start, end)).toBe(3)
|
||||
})
|
||||
|
||||
it('应当正确处理同一天的情况', () => {
|
||||
const date = new Date('2024-02-27')
|
||||
expect(dateUtils.getDaysDiff(date, date)).toBe(0)
|
||||
})
|
||||
})
|
||||
|
||||
describe('isDateInRange', () => {
|
||||
it('应当正确判断日期是否在范围内', () => {
|
||||
const start = new Date('2024-02-01')
|
||||
const end = new Date('2024-02-29')
|
||||
const date = new Date('2024-02-15')
|
||||
expect(dateUtils.isDateInRange(date, start, end)).toBe(true)
|
||||
})
|
||||
|
||||
it('应当正确处理边界情况', () => {
|
||||
const start = new Date('2024-02-01')
|
||||
const end = new Date('2024-02-29')
|
||||
expect(dateUtils.isDateInRange(start, start, end)).toBe(true)
|
||||
expect(dateUtils.isDateInRange(end, start, end)).toBe(true)
|
||||
})
|
||||
|
||||
it('应当正确处理范围外的情况', () => {
|
||||
const start = new Date('2024-02-01')
|
||||
const end = new Date('2024-02-29')
|
||||
const before = new Date('2024-01-31')
|
||||
const after = new Date('2024-03-01')
|
||||
expect(dateUtils.isDateInRange(before, start, end)).toBe(false)
|
||||
expect(dateUtils.isDateInRange(after, start, end)).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe('getStartOfDay和getEndOfDay', () => {
|
||||
it('应当正确获取一天的开始时间', () => {
|
||||
const date = new Date('2024-02-27 14:30:45')
|
||||
const start = dateUtils.getStartOfDay(date)
|
||||
expect(start.getHours()).toBe(0)
|
||||
expect(start.getMinutes()).toBe(0)
|
||||
expect(start.getSeconds()).toBe(0)
|
||||
})
|
||||
|
||||
it('应当正确获取一天的结束时间', () => {
|
||||
const date = new Date('2024-02-27 14:30:45')
|
||||
const end = dateUtils.getEndOfDay(date)
|
||||
expect(end.getHours()).toBe(23)
|
||||
expect(end.getMinutes()).toBe(59)
|
||||
expect(end.getSeconds()).toBe(59)
|
||||
})
|
||||
})
|
||||
|
||||
describe('addDays', () => {
|
||||
it('应当正确添加天数', () => {
|
||||
const date = new Date('2024-02-27')
|
||||
expect(dateUtils.addDays(1, date).toDateString()).toBe(new Date('2024-02-28').toDateString())
|
||||
expect(dateUtils.addDays(-1, date).toDateString()).toBe(new Date('2024-02-26').toDateString())
|
||||
})
|
||||
})
|
||||
|
||||
describe('formatRelativeTime', () => {
|
||||
beforeEach(() => {
|
||||
// 固定当前时间为2024-02-27 14:30:00
|
||||
vi.useFakeTimers()
|
||||
vi.setSystemTime(new Date('2024-02-27 14:30:00'))
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
vi.useRealTimers()
|
||||
})
|
||||
|
||||
it('应当正确格式化相对时间', () => {
|
||||
expect(dateUtils.formatRelativeTime(new Date('2024-02-27 14:29:30'))).toBe('刚刚')
|
||||
expect(dateUtils.formatRelativeTime(new Date('2024-02-27 14:25:00'))).toBe('5分钟前')
|
||||
expect(dateUtils.formatRelativeTime(new Date('2024-02-27 13:30:00'))).toBe('1小时前')
|
||||
expect(dateUtils.formatRelativeTime(new Date('2024-02-26 14:30:00'))).toBe('1天前')
|
||||
expect(dateUtils.formatRelativeTime(new Date('2024-01-27 14:30:00'))).toBe('2024-01-27')
|
||||
})
|
||||
})
|
||||
|
||||
describe('getDayOfWeek', () => {
|
||||
it('应当正确获取星期几', () => {
|
||||
expect(dateUtils.getDayOfWeek(new Date('2024-02-27'))).toBe('星期二')
|
||||
expect(dateUtils.getDayOfWeek(new Date('2024-02-25'))).toBe('星期日')
|
||||
})
|
||||
})
|
||||
|
||||
describe('getDaysUntilExpiration', () => {
|
||||
it('应当正确计算到期天数', () => {
|
||||
const current = new Date('2024-02-27')
|
||||
const future = new Date('2024-03-01')
|
||||
expect(dateUtils.getDaysUntilExpiration(current, future)).toBe('3天')
|
||||
})
|
||||
|
||||
it('应当正确处理已过期情况', () => {
|
||||
const current = new Date('2024-02-27')
|
||||
const past = new Date('2024-02-26')
|
||||
expect(dateUtils.getDaysUntilExpiration(current, past)).toBe('已过期')
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user