import { describe, expect, it } from "vitest"; import { render, screen } from "@testing-library/react"; import ItemDoctor from "@/app/component/ItemDoctor"; import Loading from "@/app/doctors/loading"; const DOCTOR = { id: 1, uuid: "84b7ea9e-2fe1-4413-906d-7a5bf05e6f8f", name: "محمدباقر جهانتاب", specialties: [{ id: "13", name: "جراحی عمومی", parent_id: null }], active: 1, free_turn: "شنبه ۱۷:۴۵", }; const noop = () => {}; describe("ItemDoctor — لینک پروفایل", () => { it("پزشک با uuid لینک می‌گیرد", () => { render(); const links = screen.getAllByRole("link"); expect(links.length).toBeGreaterThan(0); for (const link of links) { expect(link).toHaveAttribute("href", `/doctor/${DOCTOR.uuid}`); } }); it("کارت بدون uuid هیچ لینکی ندارد", () => { render(); expect(screen.queryByRole("link")).not.toBeInTheDocument(); }); it("رشتهٔ undefined هرگز در HTML نمی‌نشیند", () => { // ریشهٔ خطای Not found (404) در Search Console: href="/doctor/undefined". const { container } = render( ); expect(container.innerHTML).not.toContain("undefined"); }); it("نام پزشک حتی بدون لینک نمایش داده می‌شود", () => { render(); expect(screen.getByText("بدون شناسه")).toBeInTheDocument(); }); it("display_name بر name مقدم است", () => { render( ); expect(screen.getByText("دکتر جهانتاب")).toBeInTheDocument(); }); }); describe("اسکلت بارگذاری /doctors", () => { it("هیچ لینک doctor/undefined تولید نمی‌کند", () => { const { container } = render(); expect(container.innerHTML).not.toContain("/doctor/undefined"); expect(screen.queryByRole("link")).not.toBeInTheDocument(); }); it("همچنان شش کارت اسکلت می‌سازد", () => { const { container } = render(); expect(container.querySelectorAll("li")).toHaveLength(6); }); });