import { describe, expect, test } from "vitest";
import { fireEvent, screen } from "@testing-library/react";
import { Avatar } from "../../../components/ui/Avatar.tsx";
import { AvatarOverrideContext } from "../../../contexts/AvatarOverrideContext.ts";
import { renderWithContexts } from "../../render.tsx";
describe("Avatar", () => {
test("an image when the user has one, versioned", () => {
renderWithContexts(
,
);
expect(screen.getByRole("img", { name: "ann" })).toHaveAttribute(
"src",
"http://localhost:8000/api/avatars/u1?v=7",
);
});
test("initials otherwise, and after the image fails", () => {
renderWithContexts();
fireEvent.error(screen.getByRole("img"));
expect(screen.queryByRole("img")).not.toBeInTheDocument();
expect(screen.getByTitle("bob")).toHaveTextContent("B");
});
test("a live override wins over stale props, and retries a failed image", () => {
const { rerender } = renderWithContexts(
,
);
expect(screen.queryByRole("img")).not.toBeInTheDocument();
rerender(
,
);
// rerender replaces the tree under the same router wrapper
expect(screen.getByRole("img")).toHaveAttribute(
"src",
expect.stringContaining("?v=2"),
);
});
});