import {it, describe, expect, vi} from "vitest"
import { render, screen, waitFor } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { Select } from ".";
describe("Select", () => {
describe("should match the snapshot", () => {
it("opened", () => {
const component = render(
);
expect(component.baseElement).toMatchSnapshot();
});
it("closed", async () => {
const component = render(
label
value 1
value 2
);
const trigger = screen.getByRole("combobox");
await waitFor(() => userEvent.click(trigger));
expect(component.baseElement).toMatchSnapshot();
});
});
it("should select correctly", async () => {
const stateFn = vi.fn();
render(
label
value 1
value 2
);
const trigger = screen.getByRole("combobox");
//select value 1
await waitFor(() => userEvent.click(trigger));
const option1 = screen.getByText("value 1");
await waitFor(() => userEvent.click(option1));
expect(stateFn).toHaveBeenCalledWith("value-1");
//select value 2
await waitFor(() => userEvent.click(trigger));
const option2 = screen.getByText("value 2");
await waitFor(() => userEvent.click(option2));
expect(stateFn).toHaveBeenCalledWith("value-2");
});
it("should be disabled", async () => {
const stateFn = vi.fn();
render(
);
const trigger = screen.getByRole("combobox");
await waitFor(() => userEvent.click(trigger));
expect(trigger).toBeDisabled();
expect(stateFn).not.toHaveBeenCalledWith();
});
});