67 lines
2.9 KiB
JavaScript
67 lines
2.9 KiB
JavaScript
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(<DoctorPage doctor={JAHANTAB} />);
|
|
|
|
expect(screen.getByRole("link", { name: "جراحی عمومی" })).toBeInTheDocument();
|
|
// بقیه اینجا نمیآیند؛ فهرست کامل در بدنهٔ صفحه است و آنجا میشکند.
|
|
expect(screen.queryByText("جراح گوارش")).not.toBeInTheDocument();
|
|
expect(screen.queryByText("جراحی سرطانها")).not.toBeInTheDocument();
|
|
});
|
|
|
|
it("تخصص اصلی به صفحهٔ فرود همان تخصص لینک میدهد", () => {
|
|
render(<DoctorPage doctor={JAHANTAB} />);
|
|
|
|
expect(screen.getByRole("link", { name: "جراحی عمومی" })).toHaveAttribute(
|
|
"href",
|
|
"/specialties/general-surgery"
|
|
);
|
|
});
|
|
|
|
it("نام پزشک با عنوان نمایش داده میشود", () => {
|
|
render(<DoctorPage doctor={JAHANTAB} />);
|
|
|
|
expect(screen.getByText(/محمدباقر جهانتاب/)).toBeInTheDocument();
|
|
});
|
|
|
|
it("پزشکِ فقط-زیرتخصص، همان زیرتخصص را در سربرگ میگیرد", () => {
|
|
render(
|
|
<DoctorPage
|
|
doctor={{ ...JAHANTAB, specialties: [{ id: "169", name: "جراح گوارش", parent_id: "13" }] }}
|
|
/>
|
|
);
|
|
|
|
expect(screen.getByRole("link", { name: "جراح گوارش" })).toBeInTheDocument();
|
|
});
|
|
|
|
it("پزشک بدون تخصص سربرگ خالی میگیرد و کرش نمیکند", () => {
|
|
expect(() =>
|
|
render(<DoctorPage doctor={{ ...JAHANTAB, specialties: [] }} />)
|
|
).not.toThrow();
|
|
|
|
expect(screen.getByText(/محمدباقر جهانتاب/)).toBeInTheDocument();
|
|
});
|
|
});
|