feat: 优化目标详情 Drawer 性能 — TDesign 生命周期控制、Tab 感知延迟加载、滚动穿透修复
This commit is contained in:
81
tests/web/hooks/use-target-detail-logic.test.ts
Normal file
81
tests/web/hooks/use-target-detail-logic.test.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
import { describe, expect, test } from "bun:test";
|
||||
|
||||
function shouldEnableHistory(
|
||||
selectedTargetId: null | number,
|
||||
timeFrom: string,
|
||||
timeTo: string,
|
||||
activeTab: string,
|
||||
): boolean {
|
||||
return selectedTargetId !== null && !!timeFrom && !!timeTo && activeTab === "history";
|
||||
}
|
||||
|
||||
function shouldEnableMetrics(selectedTargetId: null | number, timeFrom: string, timeTo: string): boolean {
|
||||
return selectedTargetId !== null && !!timeFrom && !!timeTo;
|
||||
}
|
||||
|
||||
describe("metrics enabled 条件", () => {
|
||||
test("未选中目标时不启用", () => {
|
||||
expect(shouldEnableMetrics(null, "", "")).toBe(false);
|
||||
});
|
||||
|
||||
test("选中目标但无时间范围时不启用", () => {
|
||||
expect(shouldEnableMetrics(1, "", "")).toBe(false);
|
||||
});
|
||||
|
||||
test("选中目标且有时间范围时启用", () => {
|
||||
expect(shouldEnableMetrics(1, "2025-01-01T00:00:00.000Z", "2025-01-02T00:00:00.000Z")).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe("history enabled 条件", () => {
|
||||
test("未选中目标时不启用", () => {
|
||||
expect(shouldEnableHistory(null, "from", "to", "history")).toBe(false);
|
||||
});
|
||||
|
||||
test("选中目标但概览 Tab 时不启用", () => {
|
||||
expect(shouldEnableHistory(1, "2025-01-01T00:00:00.000Z", "2025-01-02T00:00:00.000Z", "overview")).toBe(false);
|
||||
});
|
||||
|
||||
test("选中目标且记录 Tab 激活但无时间范围时不启用", () => {
|
||||
expect(shouldEnableHistory(1, "", "", "history")).toBe(false);
|
||||
});
|
||||
|
||||
test("选中目标、有时间范围且记录 Tab 激活时启用", () => {
|
||||
expect(shouldEnableHistory(1, "2025-01-01T00:00:00.000Z", "2025-01-02T00:00:00.000Z", "history")).toBe(true);
|
||||
});
|
||||
|
||||
test("打开 Drawer 默认概览 Tab 时不启用 history", () => {
|
||||
expect(shouldEnableHistory(1, "2025-01-01T00:00:00.000Z", "2025-01-02T00:00:00.000Z", "overview")).toBe(false);
|
||||
});
|
||||
|
||||
test("概览 Tab 时间变化时不启用 history", () => {
|
||||
expect(shouldEnableHistory(1, "2025-01-01T00:00:00.000Z", "2025-01-02T00:00:00.000Z", "overview")).toBe(false);
|
||||
});
|
||||
|
||||
test("记录 Tab 时间变化时启用 history", () => {
|
||||
expect(shouldEnableHistory(1, "2025-01-01T00:00:00.000Z", "2025-01-02T00:00:00.000Z", "history")).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe("默认概览 Tab 行为", () => {
|
||||
test("打开 Drawer 时 activeTab 应为 overview", () => {
|
||||
const resetTab = "overview";
|
||||
expect(resetTab).toBe("overview");
|
||||
});
|
||||
|
||||
test("切换目标时 activeTab 应重置为 overview", () => {
|
||||
const previousTab = "history";
|
||||
const resetTab = "overview";
|
||||
expect(previousTab).not.toBe(resetTab);
|
||||
expect(resetTab).toBe("overview");
|
||||
});
|
||||
});
|
||||
|
||||
describe("history 页码重置", () => {
|
||||
test("时间变化时 historyPage 应重置为 1", () => {
|
||||
const previousPage = 3;
|
||||
const resetPage = 1;
|
||||
expect(previousPage).not.toBe(resetPage);
|
||||
expect(resetPage).toBe(1);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user