/** * @file Tests for InspectorInput component */ import { render, screen, fireEvent } from "@testing-library/react"; import { InspectorInput } from "./InspectorInput"; const MockIcon = () => ; describe("InspectorInput", () => { it("renders as a simple input without label", () => { render(); expect(screen.getByPlaceholderText("Enter value")).toBeInTheDocument(); }); it("renders with text label", () => { render(); expect(screen.getByText("X")).toBeInTheDocument(); expect(screen.getByPlaceholderText("Enter value")).toBeInTheDocument(); }); it("renders with icon label", () => { render(} placeholder="Enter value" />); expect(screen.getByTestId("mock-icon")).toBeInTheDocument(); }); it("handles value changes", () => { let changed = false; const handleChange = () => { changed = true; }; render(); const input = screen.getByRole("textbox"); fireEvent.change(input, { target: { value: "test" } }); expect(changed).toBe(true); }); it("applies variant data attribute", () => { const { container, rerender } = render(); expect(container.querySelector('[data-variant="default"]')).toBeInTheDocument(); rerender(); expect(container.querySelector('[data-variant="outline"]')).toBeInTheDocument(); rerender(); expect(container.querySelector('[data-variant="filled"]')).toBeInTheDocument(); }); it("applies error state", () => { const { container, rerender } = render(); expect(container.querySelector('[data-error="true"]')).not.toBeInTheDocument(); rerender(); expect(container.querySelector('[data-error="true"]')).toBeInTheDocument(); }); it("handles disabled state", () => { render(); expect(screen.getByRole("textbox")).toBeDisabled(); }); it("applies disabled state to container with label", () => { const { container } = render(); expect(container.querySelector('[data-disabled="true"]')).toBeInTheDocument(); }); it("accepts additional className", () => { const { container } = render(); expect(container.querySelector(".custom-class")).toBeInTheDocument(); }); });