import { describe, it, expect, vi } from "vitest"; import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import BackupAlertsTable from "../BackupAlertsTable"; import type { BackupAlert } from "../../types/backups"; function alert(overrides: Partial = {}): BackupAlert { return { id: "a1", job_id: "job-1", run_id: null, alert_type: "failed_status", severity: "warning", message: "Run failed", acknowledged: false, resolved_at: null, created_at: 1_700_000_000, ...overrides, }; } describe("BackupAlertsTable", () => { it("maps alert severity onto Badge variants per design ยง2.3", () => { render( , ); expect(screen.getByText("critical").getAttribute("data-variant")).toBe( "destructive", ); expect(screen.getByText("warning").getAttribute("data-variant")).toBe( "warning", ); }); it("calls onAcknowledge with the alert id when the button is clicked", async () => { const onAcknowledge = vi.fn(); render( , ); await userEvent.click(screen.getByRole("button", { name: "Acknowledge" })); expect(onAcknowledge).toHaveBeenCalledTimes(1); expect(onAcknowledge).toHaveBeenCalledWith("ack-me"); }); it("hides the acknowledge button for already-acknowledged alerts", () => { render( , ); expect(screen.queryByRole("button", { name: "Acknowledge" })).toBeNull(); }); });