- 后端新增 GET /api/meta 端点(checkerRegistry.supportedTypes)及 MetaResponse 类型 - 前端 hook 拆分为 use-queries.ts(全局查询+useMeta)和 use-target-detail.ts(Drawer状态) - TargetDetailDrawer 拆分为 OverviewTab + HistoryTab + history-table-columns + stats.ts - 类型筛选器由 meta API 动态驱动,删除 target-type-display 静态映射 - 列定义改为工厂函数 createTargetTableColumns(checkerTypes),TargetGroup 新增 columns prop - 修复 StatusDonut key、StatusBar maxSlots prop、TrendChart 移除 loading prop - 补充 utils/time、utils/stats、动态列工厂测试,删除旧 mapping 测试 - 同步 delta specs 到主 specs,归档 frontend-architecture-refactor change
30 lines
902 B
TypeScript
30 lines
902 B
TypeScript
import { describe, expect, test } from "bun:test";
|
|
|
|
import { subtractHours } from "../../../src/web/utils/time";
|
|
|
|
describe("subtractHours", () => {
|
|
test("正常扣减小时", () => {
|
|
const result = subtractHours(new Date("2025-01-15T12:00:00.000Z"), 3);
|
|
|
|
expect(result.toISOString()).toBe("2025-01-15T09:00:00.000Z");
|
|
});
|
|
|
|
test("跨天扣减", () => {
|
|
const result = subtractHours(new Date("2025-01-15T02:00:00.000Z"), 6);
|
|
|
|
expect(result.toISOString()).toBe("2025-01-14T20:00:00.000Z");
|
|
});
|
|
|
|
test("跨月扣减", () => {
|
|
const result = subtractHours(new Date("2025-03-01T01:00:00.000Z"), 2);
|
|
|
|
expect(result.toISOString()).toBe("2025-02-28T23:00:00.000Z");
|
|
});
|
|
|
|
test("扣减 0 小时返回相同时间", () => {
|
|
const result = subtractHours(new Date("2025-01-15T12:00:00.000Z"), 0);
|
|
|
|
expect(result.toISOString()).toBe("2025-01-15T12:00:00.000Z");
|
|
});
|
|
});
|