Files
fusion/packages/dashboard/app/components/__tests__/CapacityRiskBanner.test.tsx
Fusion 2c50fb6b2d feat(FN-4199): complete Step 3 — add capacity risk banner
Fusion-Task-Id: FN-4199
Fusion-Task-Lineage: fd530f3d-ef2e-4684-ab05-5aaab6856f15
2026-05-13 06:29:35 -07:00

71 lines
2.1 KiB
TypeScript

import { fireEvent, render, screen } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { CapacityRiskBanner } from "../CapacityRiskBanner";
describe("CapacityRiskBanner", () => {
it("renders nothing when signal is null", () => {
const { container } = render(<CapacityRiskBanner signal={null} />);
expect(container.firstChild).toBeNull();
});
it("renders nothing when signal is not at risk", () => {
const { container } = render(
<CapacityRiskBanner
signal={{
atRisk: false,
todoCount: 10,
inProgressCount: 2,
inReviewCount: 1,
idleNonEphemeralAgentCount: 1,
threshold: 20,
reason: "ok",
}}
/>,
);
expect(container.firstChild).toBeNull();
});
it("renders counts and threshold when at risk", () => {
render(
<CapacityRiskBanner
signal={{
atRisk: true,
todoCount: 21,
inProgressCount: 3,
inReviewCount: 2,
idleNonEphemeralAgentCount: 0,
threshold: 20,
reason: "todo-exceeds-threshold-and-no-idle-agents",
}}
/>,
);
expect(screen.getByText(/Todo 21/)).toBeInTheDocument();
expect(screen.getByText(/threshold 20/)).toBeInTheDocument();
expect(screen.getByText(/In Progress 3/)).toBeInTheDocument();
expect(screen.getByText(/In Review 2/)).toBeInTheDocument();
expect(screen.getByText(/Idle agents 0/)).toBeInTheDocument();
});
it("calls onDismiss when dismiss button is clicked", () => {
const onDismiss = vi.fn();
render(
<CapacityRiskBanner
signal={{
atRisk: true,
todoCount: 21,
inProgressCount: 3,
inReviewCount: 2,
idleNonEphemeralAgentCount: 0,
threshold: 20,
reason: "todo-exceeds-threshold-and-no-idle-agents",
}}
onDismiss={onDismiss}
/>,
);
fireEvent.click(screen.getByRole("button", { name: /dismiss capacity warning/i }));
expect(onDismiss).toHaveBeenCalledTimes(1);
});
});