import { render, screen, waitFor } from "@solidjs/testing-library";
import { afterEach, describe, expect, it } from "vitest";
import { Toast, toast } from "../../../src/components/toast/index";
afterEach(() => {
toast.clear();
});
describe("Toast", () => {
it("region has role=region", () => {
render(() => );
expect(screen.getByRole("region")).toBeTruthy();
});
it("region has aria-label", () => {
render(() => );
expect(screen.getByRole("region").getAttribute("aria-label")).toBeTruthy();
});
it("toast() adds a toast to the region", () => {
render(() => );
toast("Hello world");
expect(screen.getByText("Hello world")).toBeTruthy();
});
it("toast.success() creates a success toast", () => {
render(() => );
toast.success("Saved!");
expect(screen.getByText("Saved!")).toBeTruthy();
});
it("toast.error() creates an error toast", () => {
render(() => );
toast.error("Failed");
expect(screen.getByText("Failed")).toBeTruthy();
});
it("toast.dismiss() removes a toast", async () => {
render(() => );
const id = toast("Dismissable");
expect(screen.getByText("Dismissable")).toBeTruthy();
toast.dismiss(id);
await waitFor(() => expect(screen.queryByText("Dismissable")).toBeNull());
});
it("toast.clear() removes all toasts", async () => {
render(() => );
toast("One");
toast("Two");
expect(screen.getByText("One")).toBeTruthy();
expect(screen.getByText("Two")).toBeTruthy();
toast.clear();
await waitFor(() => {
expect(screen.queryByText("One")).toBeNull();
expect(screen.queryByText("Two")).toBeNull();
});
});
it("toast returns an ID", () => {
render(() => );
const id = toast("Test");
expect(typeof id).toBe("string");
expect(id.length).toBeGreaterThan(0);
});
});