import test from 'node:test' import assert from 'node:assert/strict' import { formatDateTime } from '../src/utils/datetime.ts' // 全局时间展示统一为字符串「YYYY-MM-DD HH:mm:ss」(module13 用户需求)。 test('test_datetime_format_normal_primary_path', () => { assert.equal(formatDateTime('2026-04-12T17:12:24'), '2026-04-12 17:12:24', 'ISO 带 T 需转空格') assert.equal(formatDateTime('2026-09-05 08:00:00'), '2026-09-05 08:00:00', '已是目标格式原样返回') assert.equal(formatDateTime('2026-04-12T10:45:46'), '2026-04-12 10:45:46') }) test('test_datetime_format_normal_variant_input', () => { assert.equal(formatDateTime('2026-09-05T08:00:00.000Z'), '2026-09-05 08:00:00', '毫秒/时区后缀应剥离') assert.equal(formatDateTime('2026-09-05 08:00:00.000'), '2026-09-05 08:00:00') assert.equal(formatDateTime('2026-04-12'), '2026-04-12 00:00:00', '仅日期补 00:00:00') }) test('test_datetime_format_normal_repeated_operation_is_idempotent', () => { const once = formatDateTime('2026-09-05T08:00:00') assert.equal(formatDateTime(once), once, '对已格式化结果重复调用幂等') }) test('test_datetime_format_boundary_empty_input', () => { assert.equal(formatDateTime(null), '—', '空值回退默认 —') assert.equal(formatDateTime(undefined), '—') assert.equal(formatDateTime(''), '—') assert.equal(formatDateTime('', '空'), '空', '支持自定义兜底') }) test('test_datetime_format_boundary_single_item', () => { const out = formatDateTime(1787890000) // 秒级时间戳 assert.match(out, /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/, '秒级时间戳输出完整格式') const ms = formatDateTime(1787890000000) // 毫秒级时间戳 assert.match(ms, /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/, '毫秒级时间戳输出完整格式') }) test('test_datetime_format_boundary_limit_or_missing_field', () => { assert.equal(formatDateTime(new Date(2026, 0, 15, 9, 30, 5)), '2026-01-15 09:30:05', 'Date 实例本地化格式化') }) test('test_datetime_format_invalid_input_rejected', () => { assert.equal(formatDateTime('abc'), '—', '非日期字符串回退') assert.equal(formatDateTime('not-a-date'), '—') assert.equal(formatDateTime(new Date('invalid')), '—', '无效 Date 回退') }) test('test_datetime_format_dependency_failure_returns_actionable_message', () => { // 兜底参数可区分“无值”与“解析失败”,避免把空态当异常。 assert.equal(formatDateTime('', '暂无'), '暂无') assert.equal(formatDateTime('2026/13/99'), '—', '非法历法日期回退而非抛错') })