feat: enhance SEO for listing and specialty pages, fix search autocomplete issue
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
buildCanonicalQuery,
|
||||
buildFilteredListingCanonical,
|
||||
getEntityCanonical,
|
||||
} from "@/lib/getCanonicalUrl";
|
||||
|
||||
@@ -27,6 +28,41 @@ describe("buildCanonicalQuery — تصمیم M3-B", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("buildFilteredListingCanonical — صفحات لیست فیلتردار", () => {
|
||||
const HOST = "yasuj-nobat.ir";
|
||||
|
||||
it("صفحهٔ فیلتردار self-canonical میشود، نه canonical به صفحهٔ دیگر", () => {
|
||||
expect(
|
||||
buildFilteredListingCanonical(HOST, "/doctors", "?specialty=x")
|
||||
).toBe("https://yasuj-nobat.ir/doctors?specialty=x");
|
||||
});
|
||||
|
||||
it("/clinics هم همین سیاست را دارد", () => {
|
||||
expect(buildFilteredListingCanonical(HOST, "/clinics", "?name=a")).toBe(
|
||||
"https://yasuj-nobat.ir/clinics?name=a"
|
||||
);
|
||||
});
|
||||
|
||||
it("ترتیب متفاوت پارامترها به یک canonical میرسد", () => {
|
||||
const a = buildFilteredListingCanonical(HOST, "/doctors", "?gender=woman&specialty=x");
|
||||
const b = buildFilteredListingCanonical(HOST, "/doctors", "?specialty=x&gender=woman");
|
||||
expect(a).toBe(b);
|
||||
});
|
||||
|
||||
it("page بهتنهایی فیلتر نیست → مسیر عادی M3-B", () => {
|
||||
expect(buildFilteredListingCanonical(HOST, "/doctors", "?page=2")).toBeNull();
|
||||
});
|
||||
|
||||
it("لیست بدون کوئری و مسیرهای غیرلیست دخالتی نمیگیرند", () => {
|
||||
expect(buildFilteredListingCanonical(HOST, "/doctors", "")).toBeNull();
|
||||
expect(buildFilteredListingCanonical(HOST, "/specialties/x", "?a=1")).toBeNull();
|
||||
});
|
||||
|
||||
it("پارامتر خالی فیلتر حساب نمیشود", () => {
|
||||
expect(buildFilteredListingCanonical(HOST, "/doctors", "?specialty=")).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe("getEntityCanonical — C1-b", () => {
|
||||
it("موجودیت به دامنهٔ شهر خودش canonical میشود، نه دامنهٔ سروکننده", () => {
|
||||
expect(getEntityCanonical(YASUJ_CITY_ID, "/doctor/abc", "nobat724.com")).toBe(
|
||||
|
||||
Reference in New Issue
Block a user