33 lines
991 B
TypeScript
33 lines
991 B
TypeScript
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");
|
|
});
|