import { describe, it, expect } from "vitest";
import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { RecentPicksFeed } from "~/components/draft/RecentPicksFeed";
const makePick = (n: number) => ({
id: String(n),
pickNumber: n,
participant: { name: `Participant ${n}` },
sport: { name: "NFL" },
team: { name: `Team ${n}` },
});
describe("RecentPicksFeed", () => {
it("renders the Latest Picks header", () => {
render();
expect(screen.getByText("Latest Picks")).toBeInTheDocument();
});
it("shows picks by default (expanded)", () => {
render();
expect(screen.getByText("Participant 1")).toBeInTheDocument();
expect(screen.getByText("Participant 2")).toBeInTheDocument();
});
it("shows empty message when no picks and expanded", () => {
render();
expect(screen.getByText("No picks yet")).toBeInTheDocument();
});
it("collapses picks when header button is clicked", async () => {
const user = userEvent.setup();
render();
await user.click(screen.getByRole("button", { name: "Toggle latest picks" }));
expect(screen.queryByText("Participant 1")).not.toBeInTheDocument();
expect(screen.queryByText("Participant 2")).not.toBeInTheDocument();
});
it("re-expands when header button is clicked again", async () => {
const user = userEvent.setup();
render();
const btn = screen.getByRole("button", { name: "Toggle latest picks" });
await user.click(btn);
await user.click(btn);
expect(screen.getByText("Participant 1")).toBeInTheDocument();
});
it("limits display to the 3 most recent picks", () => {
const picks = [makePick(1), makePick(2), makePick(3), makePick(4), makePick(5)];
render();
expect(screen.queryByText("Participant 1")).not.toBeInTheDocument();
expect(screen.queryByText("Participant 2")).not.toBeInTheDocument();
expect(screen.getByText("Participant 3")).toBeInTheDocument();
expect(screen.getByText("Participant 4")).toBeInTheDocument();
expect(screen.getByText("Participant 5")).toBeInTheDocument();
});
it("sets aria-expanded correctly", async () => {
const user = userEvent.setup();
render();
const btn = screen.getByRole("button", { name: "Toggle latest picks" });
expect(btn).toHaveAttribute("aria-expanded", "true");
await user.click(btn);
expect(btn).toHaveAttribute("aria-expanded", "false");
});
});