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(); }); });