mirror of
https://github.com/OpenHands/OpenHands.git
synced 2026-03-22 13:47:19 +08:00
110 lines
2.7 KiB
TypeScript
110 lines
2.7 KiB
TypeScript
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");
|
|
});
|
|
});
|