import { fireEvent, render, screen } from "@testing-library/react";
import { vi } from "vitest";

describe("ToastContext", () => {
  it("renders a toast", async () => {
    const toastContextPath = new URL("../../context/ToastContext.tsx", import.meta.url).pathname;
    vi.doUnmock(toastContextPath);
    await vi.resetModules();

    const { ToastProvider, useToast } = await import(toastContextPath);

    const TestComponent = () => {
      const { addToast } = useToast();
      return <button onClick={() => addToast("Hello", "info")}>Toast</button>;
    };

    render(
      <ToastProvider>
        <TestComponent />
      </ToastProvider>
    );

    fireEvent.click(screen.getByRole("button", { name: "Toast" }));

    expect(screen.getByText("Hello")).toBeInTheDocument();
  });
});
