- Implemented canonical URL strategies for city-specific domains and entities. - Added helper functions for domain and city resolution. - Created tests for canonical URL generation and domain resolution. - Introduced entity quality checks for doctors and clinics to ensure meaningful content. - Developed unique introductory texts for listing pages to avoid duplicate content. - Established robots.txt policies for listing pages to manage indexing based on user filters. - Enhanced specialty content with dynamic introductions and FAQs to improve SEO.
62 lines
2.2 KiB
JavaScript
62 lines
2.2 KiB
JavaScript
import { describe, expect, it } from "vitest";
|
|
import citiesData from "@/data/city.json";
|
|
import { ROOT_CITY_ID } from "@/lib/rootCity";
|
|
import {
|
|
extractEntityCityId,
|
|
findDomainByCityId,
|
|
resolveCityDisplayName,
|
|
} from "@/lib/domainHelpers";
|
|
|
|
const YASUJ = citiesData.find((c) => c.domain === "yasuj-nobat.ir");
|
|
const ROOT = citiesData.find((c) => Number(c.id) === ROOT_CITY_ID);
|
|
|
|
describe("findDomainByCityId", () => {
|
|
it("شهر دارای دامنه را به دامنهاش نگاشت میکند", () => {
|
|
expect(findDomainByCityId(YASUJ.id)).toBe("yasuj-nobat.ir");
|
|
expect(findDomainByCityId(String(YASUJ.id))).toBe("yasuj-nobat.ir");
|
|
});
|
|
|
|
it("رکورد ریشه شهر نیست", () => {
|
|
expect(findDomainByCityId(ROOT_CITY_ID)).toBeNull();
|
|
});
|
|
|
|
it("شهر بدون دامنه یا ورودی نامعتبر → null", () => {
|
|
expect(findDomainByCityId(999999)).toBeNull();
|
|
expect(findDomainByCityId(null)).toBeNull();
|
|
expect(findDomainByCityId("")).toBeNull();
|
|
expect(findDomainByCityId("abc")).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe("resolveCityDisplayName", () => {
|
|
it("رکورد ریشه → ایران، نه نام برند", () => {
|
|
expect(resolveCityDisplayName(ROOT)).toBe("ایران");
|
|
expect(resolveCityDisplayName(null)).toBe("ایران");
|
|
});
|
|
|
|
it("شهر واقعی → نام خودش", () => {
|
|
expect(resolveCityDisplayName(YASUJ)).toBe("یاسوج");
|
|
});
|
|
});
|
|
|
|
describe("extractEntityCityId", () => {
|
|
it("کلینیک: از آرایهٔ city", () => {
|
|
expect(extractEntityCityId({ city: [{ id: String(YASUJ.id) }] })).toBe(String(YASUJ.id));
|
|
});
|
|
|
|
it("پزشک: از address[].city وقتی city خالی است", () => {
|
|
const doctor = { city: [], address: [{ city: { id: String(YASUJ.id) } }] };
|
|
expect(extractEntityCityId(doctor)).toBe(String(YASUJ.id));
|
|
});
|
|
|
|
it("اولین شهرِ دارای دامنه برنده است", () => {
|
|
const doctor = { address: [{ city: { id: 999999 } }, { city: { id: YASUJ.id } }] };
|
|
expect(findDomainByCityId(extractEntityCityId(doctor))).toBe("yasuj-nobat.ir");
|
|
});
|
|
|
|
it("بدون شهر → null", () => {
|
|
expect(extractEntityCityId({ city: [], address: [] })).toBeNull();
|
|
expect(extractEntityCityId(null)).toBeNull();
|
|
});
|
|
});
|