import { render, screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
import { MedicationAvatar } from "../../components/MedicationAvatar";
describe("MedicationAvatar", () => {
it("renders initials when no image provided", () => {
render();
expect(screen.getByText("TM")).toBeInTheDocument();
});
it("uses first two initials from medication name", () => {
render();
expect(screen.getByText("VL")).toBeInTheDocument();
});
it("handles single word names", () => {
render();
expect(screen.getByText("A")).toBeInTheDocument();
});
it("renders image when imageUrl provided", () => {
render();
const img = screen.getByAltText("Test Med");
expect(img).toBeInTheDocument();
expect(img).toHaveAttribute("src", "/api/images/test-image.jpg");
});
it("applies small size class by default", () => {
const { container } = render();
expect(container.querySelector(".med-avatar-sm")).toBeInTheDocument();
});
it("applies medium size class", () => {
const { container } = render();
expect(container.querySelector(".med-avatar-md")).toBeInTheDocument();
});
it("applies large size class", () => {
const { container } = render();
expect(container.querySelector(".med-avatar-lg")).toBeInTheDocument();
});
it("handles empty name with fallback", () => {
render();
expect(screen.getByText("?")).toBeInTheDocument();
});
it("converts initials to uppercase", () => {
render();
expect(screen.getByText("LC")).toBeInTheDocument();
});
it("adds initials class when no image", () => {
const { container } = render();
expect(container.querySelector(".med-avatar-initials")).toBeInTheDocument();
});
});