import { fireEvent, render, screen, waitFor } from "@testing-library/react";
import React, { useState } from "react";
import { describe, expect, test } from "vitest";
import { Button, Modal } from "..";
const Test = () => {
const [open, setOpen] = useState(true);
return (
null} aria-label="Test">
Foobar
);
};
describe("Modal", () => {
test("should be visible", async () => {
render();
expect(await screen.findByText("Foobar")).toBeVisible();
});
test("should be hidden after setting 'open' to false", async () => {
render();
fireEvent.click(screen.getByText("Close"));
expect(screen.getByText("Foobar")).not.toBeVisible();
});
test("should toggle scroll lock", async () => {
render();
await waitFor(() => {
expect(document.documentElement.style.overflowX).toBe("hidden");
});
await waitFor(() => {
expect(document.documentElement.style.overflowY).toBe("hidden");
});
await waitFor(() => {
expect(document.documentElement.style.scrollBehavior).toBe("unset");
});
await waitFor(() => {
expect(document.documentElement.style.scrollbarGutter).toBe("stable");
});
fireEvent.click(screen.getByText("Close"));
await waitFor(() => {
expect(document.documentElement.style.cssText).toBe("");
});
});
});