import { describe, expect, it, vi } from "vitest";
import { render, screen } from "@testing-library/react";
import DoctorPage from "@/components/doctor";
vi.mock("@/components/doctor/appointmentList", () => ({ default: () => null }));
vi.mock("@/components/doctor/detailDoctor", () => ({ default: () => null }));
vi.mock("@/components/doctor/claim", () => ({ default: () => null }));
vi.mock("@/components/doctor/detailDoctor/Share", () => ({ default: () => null }));
vi.mock("@/components/specialties/detail/Faq", () => ({ default: () => null }));
// همان شش تخصص دکتر محمدباقر جهانتاب.
const JAHANTAB = {
name: "محمدباقر جهانتاب",
specialties: [
{ id: "13", name: "جراحی عمومی", parent_id: null },
{ id: "14", name: "جراحی پلاستیک و زیبایی", parent_id: "13" },
{ id: "167", name: "جراحی لاپاراسکوپی", parent_id: "13" },
{ id: "168", name: "جراح تیروئید", parent_id: "13" },
{ id: "169", name: "جراح گوارش", parent_id: "13" },
{ id: "170", name: "جراحی سرطانها", parent_id: "13" },
],
};
describe("سربرگ صفحهٔ پزشک", () => {
it("فقط تخصص اصلی را نشان میدهد، نه هر شش تا", () => {
render();
expect(screen.getByRole("link", { name: "جراحی عمومی" })).toBeInTheDocument();
// بقیه اینجا نمیآیند؛ فهرست کامل در بدنهٔ صفحه است و آنجا میشکند.
expect(screen.queryByText("جراح گوارش")).not.toBeInTheDocument();
expect(screen.queryByText("جراحی سرطانها")).not.toBeInTheDocument();
});
it("تخصص اصلی به صفحهٔ فرود همان تخصص لینک میدهد", () => {
render();
expect(screen.getByRole("link", { name: "جراحی عمومی" })).toHaveAttribute(
"href",
"/specialties/general-surgery"
);
});
it("نام پزشک با عنوان نمایش داده میشود", () => {
render();
expect(screen.getByText(/محمدباقر جهانتاب/)).toBeInTheDocument();
});
it("پزشکِ فقط-زیرتخصص، همان زیرتخصص را در سربرگ میگیرد", () => {
render(
);
expect(screen.getByRole("link", { name: "جراح گوارش" })).toBeInTheDocument();
});
it("پزشک بدون تخصص سربرگ خالی میگیرد و کرش نمیکند", () => {
expect(() =>
render()
).not.toThrow();
expect(screen.getByText(/محمدباقر جهانتاب/)).toBeInTheDocument();
});
});