Files
nobat724_front/lib/domainHelpers.test.js
T
hamed fd48b48613 feat: add canonical URL handling and entity quality checks
- 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.
2026-07-19 07:52:50 +03:30

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();
});
});