import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { describe, expect, it, vi } from "vitest";
import { SettingsSwitch } from "#/components/features/settings/settings-switch";
describe("SettingsSwitch", () => {
it("should call the onChange handler when the input is clicked", async () => {
const user = userEvent.setup();
const onToggleMock = vi.fn();
render(
Test Switch
,
);
const switchInput = screen.getByTestId("test-switch");
await user.click(switchInput);
expect(onToggleMock).toHaveBeenCalledWith(true);
await user.click(switchInput);
expect(onToggleMock).toHaveBeenCalledWith(false);
});
it("should render a beta tag if isBeta is true", () => {
const { rerender } = render(
Test Switch
,
);
expect(screen.queryByText(/beta/i)).not.toBeInTheDocument();
rerender(
Test Switch
,
);
expect(screen.getByText(/beta/i)).toBeInTheDocument();
});
it("should be able to set a default toggle state", async () => {
const user = userEvent.setup();
const onToggleMock = vi.fn();
render(
Test Switch
,
);
expect(screen.getByTestId("test-switch")).toBeChecked();
const switchInput = screen.getByTestId("test-switch");
await user.click(switchInput);
expect(onToggleMock).toHaveBeenCalledWith(false);
expect(screen.getByTestId("test-switch")).not.toBeChecked();
});
});