import { fireEvent, render, screen } from "@testing-library/react";
import { expect, test, vi } from "vitest";

import { Select } from "@/components/ui/select";

test("renders a shadcn-style popover select and emits the chosen value", () => {
  const onValueChange = vi.fn();

  render(
    <Select
      aria-label="status"
      options={[
        { value: "all", label: "全部状态" },
        { value: "waiting_review", label: "待审核" },
      ]}
      placeholder="请选择状态"
      value="all"
      onValueChange={onValueChange}
    />,
  );

  const trigger = screen.getByRole("combobox", { name: "status" });
  expect(trigger.className).toContain("inline-flex");
  expect(trigger.className).toContain("justify-between");
  fireEvent.click(trigger);

  expect(screen.getByRole("option", { name: "待审核" })).toBeInTheDocument();

  fireEvent.click(screen.getByRole("option", { name: "待审核" }));

  expect(onValueChange).toHaveBeenCalledWith("waiting_review");
});
