import { render, screen } from "@testing-library/react";
import {
TextField,
TextFieldSize,
TextFieldType,
} from "../../components/TextField/TextField";
import { axe } from "jest-axe";
describe("TextField", () => {
// Fixes some jest-axe issues
const { getComputedStyle } = window;
window.getComputedStyle = (elt) => getComputedStyle(elt);
// Fixes some jest-axe issues
test("Should render component correctly.", () => {
const { container } = render();
expect(container.firstChild).toMatchSnapshot();
});
});
describe("Accessibility", () => {
test("Should have no accessibility violations.", async () => {
const { container } = render();
const results = await axe(container);
expect(results).toHaveNoViolations();
});
});
describe("Props", () => {
test.each(["small", "medium", "large"])(
"Should render size correctly.",
(size) => {
render();
expect(screen.getByLabelText("textfield")).toHaveClass(size);
}
);
test("Should render disabled correctly.", () => {
render();
expect(screen.getByLabelText("textfield")).toHaveClass(
"disabled"
);
});
test("Should render label correctly.", () => {
render();
expect(screen.getByLabelText("label")).toBeInTheDocument();
});
test.each([
"email",
"number",
"password",
"search",
"tel",
"text",
"time",
"url",
])("Should render type correctly.", (type) => {
render();
expect(screen.getByLabelText("textfield")).toHaveAttribute(
"type",
type
);
});
test("Should render trailing icon correctly.", () => {
render(
);
expect(screen.getByText("trailing")).toBeInTheDocument();
});
});