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