import * as React from "react";
import { render, screen } from "@testing-library/react";
import { userEvent } from "@testing-library/user-event";
import { CarouselPreviousButton } from "./CarouselPreviousButton";
import { CarouselContext } from "./CarouselRoot";
describe("CarouselPreviousButton", () => {
const renderWithContext = (ui, contextProps) => {
return render(
{ui}
);
};
test("renders visibly into the document", () => {
render();
expect(screen.getByRole("button")).toBeVisible();
});
test("triggers context callback on click", async () => {
const user = userEvent.setup();
const pageChangeHandler = jest.fn();
renderWithContext(, {
page: 1,
totalPages: 2,
setPage: pageChangeHandler,
});
await user.click(screen.getByRole("button"));
expect(pageChangeHandler).toHaveBeenCalledWith(0);
});
test("triggers callback on click", async () => {
const user = userEvent.setup();
const clickHandler = jest.fn();
renderWithContext(, {
page: 1,
totalPages: 2,
setPage: () => undefined,
});
await user.click(screen.getByRole("button"));
expect(clickHandler).toHaveBeenCalled();
});
test("renders custom content using asChild prop", () => {
render(
);
expect(screen.getByRole("button")).toHaveTextContent("test");
});
});