import { describe, expect, it, vi } from "vitest";
import { render, screen } from "@testing-library/react";
import { DataBoundary } from "../DataBoundary";
vi.mock("lucide-react", () => ({
AlertCircle: () => ⚠,
Bot: () => 🤖,
Folder: () => 📁,
Activity: () => 📊,
CheckCircle: () => ✓,
}));
describe("DataBoundary", () => {
it("renders the loading fallback before the first fetch completes", () => {
render(
Loading}
>
Loaded content
);
expect(screen.getByTestId("loading-fallback")).toBeDefined();
expect(screen.queryByText("Loaded content")).toBeNull();
});
it("renders an empty state after fetch completion instead of an infinite skeleton", () => {
render(
Loaded content
);
expect(screen.getByText("No data available")).toBeDefined();
expect(screen.queryByText("Loaded content")).toBeNull();
});
it("renders an error state when error is set", () => {
render(
Loaded content
);
expect(screen.getByTestId("data-boundary-error")).toBeDefined();
expect(screen.getByText("Boom")).toBeDefined();
});
it("renders children when data is present", () => {
render(
Loaded content
);
expect(screen.getByText("Loaded content")).toBeDefined();
expect(screen.queryByText("No data available")).toBeNull();
});
});