import { describe, expect, it, vi } from "vitest";
import { render, screen, waitFor } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { Tabs } from "..";
describe("Tabs", () => {
it("should match the snapshot", () => {
const component = render(
tab trigger 1
tab trigger 2
tab content 1
tab content 2
);
expect(component.baseElement).toMatchSnapshot();
});
it("should change tab correctly", async () => {
const tabsFn = vi.fn();
render(
tab trigger 1
tab trigger 2
tab content 1
tab content 2
);
const content1 = screen.getByText("tab content 1");
expect(content1).toBeInTheDocument();
const trigger = screen.getByRole("tab", { name: /tab trigger 2/i });
await waitFor(() => userEvent.click(trigger));
const content2 = screen.getByText("tab content 2");
expect(content2).toBeInTheDocument();
expect(tabsFn).toHaveBeenCalled();
});
it("should not trigger when disabled", async () => {
const tabsFn = vi.fn();
render(
tab trigger 1
tab trigger 2
tab content 1
tab content 2
);
const trigger = screen.getByRole("tab", { name: /tab trigger 2/i });
await waitFor(() => userEvent.click(trigger));
expect(tabsFn).not.toHaveBeenCalled();
});
});