- ایجاد پرامپت برای رفع خطای 404 ناشی از لینک `/doctor/undefined` در سایتهای بهبهان و یاسوج. - افزودن کامپوننت `CityHighlights` برای نمایش محتوای یکتا و آمار پزشکان و تخصصهای پرمراجعه در صفحهٔ اصلی هر شهر. - بهروزرسانی تستهای مربوط به کامپوننتهای `ItemDoctor` و `CityHighlights` برای اطمینان از عدم وجود لینکهای نامعتبر و نمایش صحیح اطلاعات. - ایجاد سند جدید برای مستندسازی خطاهای Search Console که باگ نیستند و نیاز به رفع ندارند. - افزودن تستهای واحد برای توابع `buildCityIntro` و دیگر توابع مرتبط با تولید متن یکتا برای صفحات لیست.
75 lines
2.4 KiB
JavaScript
75 lines
2.4 KiB
JavaScript
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(<ItemDoctor doctor={DOCTOR} setDoctors={noop} />);
|
|
|
|
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(<ItemDoctor doctor={{ id: 0 }} loading setDoctors={noop} />);
|
|
|
|
expect(screen.queryByRole("link")).not.toBeInTheDocument();
|
|
});
|
|
|
|
it("رشتهٔ undefined هرگز در HTML نمینشیند", () => {
|
|
// ریشهٔ خطای Not found (404) در Search Console: href="/doctor/undefined".
|
|
const { container } = render(
|
|
<ItemDoctor doctor={{ id: 0 }} loading setDoctors={noop} />
|
|
);
|
|
|
|
expect(container.innerHTML).not.toContain("undefined");
|
|
});
|
|
|
|
it("نام پزشک حتی بدون لینک نمایش داده میشود", () => {
|
|
render(<ItemDoctor doctor={{ id: 0, name: "بدون شناسه" }} setDoctors={noop} />);
|
|
|
|
expect(screen.getByText("بدون شناسه")).toBeInTheDocument();
|
|
});
|
|
|
|
it("display_name بر name مقدم است", () => {
|
|
render(
|
|
<ItemDoctor
|
|
doctor={{ ...DOCTOR, display_name: "دکتر جهانتاب" }}
|
|
setDoctors={noop}
|
|
/>
|
|
);
|
|
|
|
expect(screen.getByText("دکتر جهانتاب")).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
describe("اسکلت بارگذاری /doctors", () => {
|
|
it("هیچ لینک doctor/undefined تولید نمیکند", () => {
|
|
const { container } = render(<Loading />);
|
|
|
|
expect(container.innerHTML).not.toContain("/doctor/undefined");
|
|
expect(screen.queryByRole("link")).not.toBeInTheDocument();
|
|
});
|
|
|
|
it("همچنان شش کارت اسکلت میسازد", () => {
|
|
const { container } = render(<Loading />);
|
|
|
|
expect(container.querySelectorAll("li")).toHaveLength(6);
|
|
});
|
|
});
|