import "../../../tests/web/test-utils"; import { render } from "@testing-library/react"; import { describe, expect, test, vi } from "bun:test"; import type { TargetStatus } from "../../../src/shared/api"; import { TargetGroup } from "../../../src/web/components/TargetGroup"; describe("TargetGroup", () => { const columns = [ { colKey: "name", title: "名称" }, { colKey: "target", title: "目标" }, ]; const targets: TargetStatus[] = [ { currentStreak: null, group: "default", id: 1, interval: "30s", latestCheck: { durationMs: 100, failure: null, matched: true, statusDetail: "200 OK", timestamp: "2025-01-15T10:00:00.000Z", }, name: "target-1", recentSamples: [], stats: { availability: 100, downChecks: 0, totalChecks: 10, upChecks: 10 }, target: "https://example.com", type: "http", }, { currentStreak: null, group: "default", id: 2, interval: "30s", latestCheck: { durationMs: 100, failure: { kind: "error", message: "Failed", path: "$", phase: "status" }, matched: false, statusDetail: "500 Internal Server Error", timestamp: "2025-01-15T10:00:00.000Z", }, name: "target-2", recentSamples: [], stats: { availability: 50, downChecks: 1, totalChecks: 2, upChecks: 1 }, target: "https://example.org", type: "http", }, ]; const onTargetClick = vi.fn(); test("default 分组不崩溃", () => { const { container } = render( , ); expect(container.firstChild).not.toBeNull(); }); test("非 default 分组不崩溃", () => { const { container } = render( , ); expect(container.firstChild).not.toBeNull(); }); test("空 targets 不崩溃", () => { const { container } = render( , ); expect(container.firstChild).not.toBeNull(); }); });