Spaces:
Build error
Build error
| import { render, screen } from "@testing-library/react"; | |
| import { describe, expect, it, vi } from "vitest"; | |
| import userEvent from "@testing-library/user-event"; | |
| import { SettingsInput } from "#/components/features/settings/settings-input"; | |
| describe("SettingsInput", () => { | |
| it("should render an optional tag if showOptionalTag is true", async () => { | |
| const { rerender } = render( | |
| <SettingsInput testId="test-input" label="Test Input" type="text" />, | |
| ); | |
| expect(screen.queryByText(/optional/i)).not.toBeInTheDocument(); | |
| rerender( | |
| <SettingsInput | |
| testId="test-input" | |
| showOptionalTag | |
| label="Test Input" | |
| type="text" | |
| />, | |
| ); | |
| expect(screen.getByText(/optional/i)).toBeInTheDocument(); | |
| }); | |
| it("should disable the input if isDisabled is true", async () => { | |
| const { rerender } = render( | |
| <SettingsInput testId="test-input" label="Test Input" type="text" />, | |
| ); | |
| expect(screen.getByTestId("test-input")).toBeEnabled(); | |
| rerender( | |
| <SettingsInput | |
| testId="test-input" | |
| label="Test Input" | |
| type="text" | |
| isDisabled | |
| />, | |
| ); | |
| expect(screen.getByTestId("test-input")).toBeDisabled(); | |
| }); | |
| it("should set a placeholder on the input", async () => { | |
| render( | |
| <SettingsInput | |
| testId="test-input" | |
| label="Test Input" | |
| type="text" | |
| placeholder="Test Placeholder" | |
| />, | |
| ); | |
| expect(screen.getByTestId("test-input")).toHaveAttribute( | |
| "placeholder", | |
| "Test Placeholder", | |
| ); | |
| }); | |
| it("should set a default value on the input", async () => { | |
| render( | |
| <SettingsInput | |
| testId="test-input" | |
| label="Test Input" | |
| type="text" | |
| defaultValue="Test Value" | |
| />, | |
| ); | |
| expect(screen.getByTestId("test-input")).toHaveValue("Test Value"); | |
| }); | |
| it("should render start content", async () => { | |
| const startContent = <div>Start Content</div>; | |
| render( | |
| <SettingsInput | |
| testId="test-input" | |
| label="Test Input" | |
| type="text" | |
| defaultValue="Test Value" | |
| startContent={startContent} | |
| />, | |
| ); | |
| expect(screen.getByText("Start Content")).toBeInTheDocument(); | |
| }); | |
| it("should call onChange with the input value", async () => { | |
| const onChangeMock = vi.fn(); | |
| const user = userEvent.setup(); | |
| render( | |
| <SettingsInput | |
| testId="test-input" | |
| label="Test Input" | |
| type="text" | |
| onChange={onChangeMock} | |
| />, | |
| ); | |
| const input = screen.getByTestId("test-input"); | |
| await user.type(input, "Test"); | |
| expect(onChangeMock).toHaveBeenCalledTimes(4); | |
| expect(onChangeMock).toHaveBeenNthCalledWith(4, "Test"); | |
| }); | |
| }); | |