import { useContext } from "react";
import { render, screen } from "@testing-library/react";
import { TabsRoot } from "./TabsRoot";
import { TabsList } from "./TabsList";
import { TabsTrigger } from "./TabsTrigger";
import { TabsContext } from "./context";
import { userEvent } from "@storybook/testing-library";
import { config } from "react-transition-group";
config.disabled = true;
describe("TabsTrigger", () => {
test("renders visibly into the document", () => {
render(
Test
);
expect(screen.getByText("Test")).toBeVisible();
});
test("correctly sets trigger to active", async () => {
const user = userEvent.setup();
jest.fn();
render(
Test
Test2
Test3
);
const trigger2 = screen.getAllByRole("tab")[2];
expect(trigger2).toHaveAttribute("data-state", "inactive");
expect(trigger2).toHaveStyle("borderBottom: none");
await user.click(trigger2);
expect(trigger2).toHaveAttribute("data-state", "active");
expect(trigger2).toHaveStyle("borderBottom: 1px solid ##111111");
});
test("sets previous rect", () => {
const Note = () => {
const { previousRect } = useContext(TabsContext);
if (previousRect) {
return {previousRect.width};
}
return null;
};
render(
Test
Test2
);
userEvent.click(screen.getByRole("tab", { selected: false }));
expect(screen.getByRole("note")).toBeInTheDocument();
});
});