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