feat: Refactor clinic-related functions and tests, removing doctor intro logic
This commit is contained in:
@@ -3,7 +3,6 @@ import cityData from "@/data/city.json";
|
||||
import {
|
||||
buildCityIntro,
|
||||
buildClinicsIntro,
|
||||
buildDoctorsIntro,
|
||||
} from "@/lib/listingIntro";
|
||||
|
||||
const CITIES = ["بهبهان", "یاسوج", "یزد", "تبریز", "اصفهان"];
|
||||
@@ -81,22 +80,21 @@ describe("جملهٔ آماری متن صفحات لیست", () => {
|
||||
});
|
||||
|
||||
it("آمار صفر جمله را اضافه نمیکند", () => {
|
||||
const withZero = buildDoctorsIntro("بهبهان", 0);
|
||||
const without = buildDoctorsIntro("بهبهان");
|
||||
const withZero = buildClinicsIntro("بهبهان", 0);
|
||||
const without = buildClinicsIntro("بهبهان");
|
||||
|
||||
expect(withZero).toBe(without);
|
||||
expect(withZero).not.toContain("0 پزشک");
|
||||
expect(withZero).not.toContain("0 مرکز درمانی");
|
||||
});
|
||||
|
||||
it("ورودی نامعتبر جمله را اضافه نمیکند", () => {
|
||||
const text = buildDoctorsIntro("بهبهان", "abc");
|
||||
const text = buildClinicsIntro("بهبهان", "abc");
|
||||
|
||||
expect(text).not.toContain("NaN");
|
||||
expect(text).toBe(buildDoctorsIntro("بهبهان"));
|
||||
expect(text).toBe(buildClinicsIntro("بهبهان"));
|
||||
});
|
||||
|
||||
it("نام شهر و واحد درست در جمله میآید", () => {
|
||||
expect(buildDoctorsIntro("یزد", 40)).toContain("40 پزشک در یزد");
|
||||
expect(buildClinicsIntro("یزد", 9)).toContain("9 مرکز درمانی در یزد");
|
||||
});
|
||||
});
|
||||
|
||||
+13
-28
@@ -12,23 +12,15 @@ function hash(value) {
|
||||
// seed همیشه unsigned — با >> علامتدار، هشهای بزرگ ایندکس منفی میساختند.
|
||||
const pick = (variants, seed) => variants[(seed >>> 0) % variants.length];
|
||||
|
||||
const DOCTOR_INTROS = (city) => [
|
||||
`فهرست پزشکان ${city} در این صفحه گردآوری شده است؛ از پزشک عمومی تا فوقتخصصهای حوزههای مختلف. هر پروفایل شامل تخصص، کد نظام پزشکی، محل مطب و بازخورد بیماران پیشین است. با فیلترهای بالای صفحه میتوانید نتایج را بر اساس تخصص، جنسیت پزشک یا درجهٔ تخصصی محدود کنید تا سریعتر به گزینهٔ مناسب برسید. پس از انتخاب پزشک، تقویم نوبتهای خالی نمایش داده میشود و رزرو در همان لحظه قطعی میگردد؛ نیازی به تماس تلفنی یا مراجعهٔ حضوری برای گرفتن نوبت نیست. اطلاعات هر پزشک بهصورت دورهای بازبینی میشود تا ساعات کاری و محل پذیرش با وضعیت واقعی مطب همخوان بماند. اگر ترجیح میدهید جستوجو را از یک حوزهٔ درمانی مشخص شروع کنید، صفحهٔ تخصصها فهرست کامل رشتهها را در ${city} نشان میدهد و از هر رشته مستقیم به پزشکان همان حوزه میرسید. هزینهٔ هر خدمت نیز پیش از تأیید نهایی نمایش داده میشود.`,
|
||||
`اینجا میتوانید متخصصان فعال ${city} را با هم مقایسه کنید. اطلاعات هر پزشک — رشتهٔ تخصصی، سابقهٔ فعالیت، نشانی محل پذیرش و امتیاز مراجعان — بهشکل یکسان نمایش داده میشود تا مقایسه منصفانه باشد. امتیازها از بیماران واقعی همان پزشک جمعآوری شدهاند و نه از منابع عمومی، بنابراین تصویر دقیقتری از کیفیت خدمات به دست میدهند. برخی پزشکان بیش از یک محل پذیرش دارند و ساعات کاری هر محل جداگانه اعلام شده است؛ هنگام رزرو، محل مراجعه را خودتان انتخاب میکنید تا نوبت با برنامهٔ روزانهتان هماهنگ باشد. رزرو بهصورت شبانهروزی انجام میشود و تأییدیه بلافاصله پیامک میگردد. در صورت تغییر برنامه، لغو نوبت از بخش نوبتهای من امکانپذیر است و آن بازهٔ زمانی برای بیمار دیگری آزاد میشود.`,
|
||||
`دسترسی به پزشک مناسب در ${city} با این فهرست سادهتر میشود. بهجای جستوجو میان منابع پراکنده، همهٔ متخصصان شهر را با اطلاعات ساختاریافته یکجا میبینید و میتوانید بر اساس تخصص یا نزدیکی محل مطب انتخاب کنید. رزرو نوبت بهصورت آنلاین و شبانهروزی انجام میشود: تاریخ و ساعت خالی را انتخاب میکنید، تأیید میگیرید و پیامک تأییدیه دریافت میکنید. در صورت تغییر برنامه نیز لغو نوبت از حساب کاربریتان ممکن است. سابقهٔ نوبتهای شما در همان حساب باقی میماند و مراجعهٔ بعدی به همان پزشک سریعتر انجام میشود. مراکز درمانی و کلینیکهای ${city} هم صفحهٔ اختصاصی خود را دارند؛ اگر ترجیح میدهید ابتدا مرکز درمانی را انتخاب کنید، از آن مسیر هم میتوانید به همین پزشکان برسید.`,
|
||||
`پزشکان ${city} در این صفحه بر اساس تخصص، جنسیت و درجهٔ علمی قابل فیلتر شدناند. هر کارت نام پزشک، حوزهٔ فعالیت، امتیاز بیماران و اولین نوبت آزاد را نشان میدهد تا بدون باز کردن چند صفحه بتوانید مقایسه کنید. اطلاعات هر پروفایل بهصورت دورهای بازبینی میشود تا ساعات کاری و محل پذیرش با وضعیت واقعی مطب همخوان بماند. امتیازها از بیماران واقعی همان پزشک جمعآوری شدهاند، نه از منابع عمومی، بنابراین تصویر دقیقتری از کیفیت خدمات میدهند. هزینهٔ هر خدمت هم پیش از تأیید نهایی نمایش داده میشود تا انتخابتان با اطلاع کامل انجام شود. با انتخاب هر پزشک، محلهای پذیرش و ساعات کاری هر محل را میبینید و نوبت را برای همان محل رزرو میکنید. اگر نمیدانید به کدام تخصص مراجعه کنید، فهرست تخصصها نقطهٔ شروع بهتری است.`,
|
||||
`جستوجوی پزشک در ${city} از همینجا شروع میشود. میتوانید نام پزشک یا نام تخصص را تایپ کنید؛ هر دو در نتایج لحاظ میشوند. کارت هر پزشک شامل تخصصها، محل مطب و وضعیت نوبتدهی است و پزشکانی که هماکنون نوبت آزاد دارند بالاتر نمایش داده میشوند. رزرو نهایی در همان لحظه انجام میشود و تأییدیه پیامک میگردد؛ نیازی به تماس با منشی مطب نیست. سابقهٔ نوبتهای شما در همان حساب کاربری باقی میماند و مراجعهٔ بعدی به همان پزشک سریعتر انجام میشود. اگر پزشک بیش از یک محل پذیرش داشته باشد، ساعات کاری هر محل جداگانه اعلام شده است و هنگام رزرو خودتان محل مراجعه را انتخاب میکنید. در صورت تغییر برنامه، لغو نوبت از بخش نوبتهای من ممکن است و آن بازه برای بیمار دیگری آزاد میشود.`,
|
||||
`فهرست کامل پزشکان ${city} را اینجا میبینید، از پزشک عمومی تا فوقتخصص. برای هر پزشک، کد نظام پزشکی و نشانی محل پذیرش درج شده تا از هویت حرفهای مطمئن شوید. نوبتها بهصورت آنلاین و شبانهروزی رزرو میشوند و در صورت نیاز، لغو نوبت هم از همان حساب کاربری ممکن است. برای دیدن مراکز درمانی بهجای پزشکان، صفحهٔ کلینیکهای ${city} فهرست جداگانهای دارد. هر مرکز درمانی صفحهٔ اختصاصی خود را دارد که پزشکان همکار، تخصصهای موجود و بیمههای طرف قرارداد را نشان میدهد. اگر ترجیح میدهید ابتدا مرکز را انتخاب کنید و بعد پزشک را، آن مسیر هم به همین فهرست میرسد. رزرو در هر دو مسیر یکسان است: انتخاب بازهٔ خالی، تأیید، و دریافت پیامک تأییدیه در همان لحظه.`,
|
||||
const CLINIC_INTROS = (city) => [
|
||||
`مراکز درمانی ${city} اینجا فهرست شدهاند. هر کارت نام مرکز، شمارهٔ تماس و نشانی را نشان میدهد و با یک کلیک به صفحهٔ کامل همان مرکز میرسید. آنجا چیزهایی هست که در کارت جا نمیشود: تخصصهایی که ارائه میشود، پزشکانی که پذیرش دارند، بیمههای طرف قرارداد و موقعیت روی نقشه. اگر خدمت مشخصی مدنظرتان است، فیلتر تخصص بالای صفحه فهرست را کوتاه میکند. نوبت از صفحهٔ خودِ مرکز گرفته میشود؛ پزشک را انتخاب میکنید، بازهٔ خالی را میزنید و تأییدیه پیامک میشود. مرکزی که چند شعبه دارد، هر شعبه رکورد جدا با ساعت کاری خودش دارد. فهرست صفحهبندی دارد، پس اگر شهر مراکز زیادی داشته باشد همه در یک صفحه فشرده نمیشوند. سابقهٔ نوبتهایی که میگیرید در حساب کاربریتان میماند.`,
|
||||
`اگر ترجیح میدهید اول مرکز درمانی را انتخاب کنید و بعد پزشک را، این صفحه نقطهٔ شروع است. کلینیکهای تخصصی، درمانگاههای چندتخصصی و مراکز تصویربرداری ${city} کنار هم آمدهاند. صفحهٔ هر مرکز پزشکان همکارش را با تخصص و اولین نوبت آزادشان نشان میدهد، پس لازم نیست جداگانه دنبال پزشک بگردید. نشانی و شمارهٔ تماس هر مرکز دورهای بازبینی میشود. مراکزی که شبانهروزی پذیرش دارند جدا مشخص شدهاند. رزرو همانجا انجام میشود و هزینهٔ خدمت پیش از تأیید نهایی نمایش داده میشود، پس قبل از قطعیشدن میدانید چقدر است. اگر مرکزی هنوز پزشکی ثبت نکرده باشد، صفحهاش اطلاعات تماس را نشان میدهد ولی تقویم نوبت خالی نخواهد داشت. لغو نوبت هم از بخش نوبتهای من انجام میشود.`,
|
||||
`فهرست زیر مراکز درمانی فعال ${city} است. تفاوتش با یک جستوجوی ساده این است که هر رکورد به صفحهای کامل وصل است: موقعیت روی نقشه، ساعات کاری، فهرست تخصصها و پزشکانی که در همان مرکز پذیرش دارند. برای مراکزی که چند تخصص را زیر یک سقف جمع کردهاند، میشود در یک مراجعه چند کار را پیش برد. بیمههای طرف قرارداد هم روی همان صفحه آمده. نوبت با تأیید شما قطعی میشود و تأییدیه پیامک میگردد؛ اگر برنامهتان عوض شد، لغو از بخش نوبتهای من انجام میشود و آن بازه آزاد میشود. فیلتر تخصص بالای صفحه فهرست را کوتاه میکند و انتخاب شما در نشانی صفحه ثبت میشود، پس همان نما را میتوانید دوباره باز کنید یا برای کسی بفرستید.`,
|
||||
`کلینیکهای ${city} با اطلاعات یکشکل کنار هم آمدهاند تا مقایسه سخت نباشد. روی کارت هر مرکز نام و شمارهٔ تماس پیداست؛ باقی چیزها در صفحهٔ خودش است — تخصصها، پزشکان، بیمهها و نقشه. اگر مرکزی چند شعبه دارد، هر شعبه رکورد مستقل خودش را با ساعت کاری جداگانه دارد، پس پیش از راهافتادن شعبهٔ درست را انتخاب کنید. رزرو از صفحهٔ مرکز و از طریق پزشکش انجام میشود. تأییدیه بلافاصله پیامک میشود و سابقهٔ نوبت در حساب کاربریتان میماند تا مراجعهٔ بعدی سریعتر باشد. هزینهٔ هر خدمت هم پیش از تأیید نهایی نمایش داده میشود. مراکزی که شبانهروزی پذیرش دارند با نشانهٔ جداگانه مشخص شدهاند تا در شرایط اضطراری زودتر پیدایشان کنید.`,
|
||||
`این صفحه مراکز درمانی ${city} را نشان میدهد، از کلینیک تخصصی تا درمانگاه چندتخصصی. جستوجو را میتوانید با فیلتر تخصص محدود کنید تا فقط مراکزی بمانند که خدمت موردنظرتان را میدهند. صفحهٔ هر مرکز نشانی، شمارهٔ تماس، موقعیت روی نقشه و فهرست پزشکان همکار را دارد؛ کنار نام هر پزشک تخصص و وضعیت نوبتدهیاش هم آمده. رزرو از همانجا انجام میشود، شبانهروزی و بدون تماس تلفنی. اگر بهجای مرکز دنبال یک پزشک مشخص هستید، فهرست پزشکان ${city} مسیر مستقیمتری است. بیمههای طرف قرارداد هر مرکز روی صفحهٔ خودش آمده، پس پیش از مراجعه میدانید پوشش دارید یا نه. اگر مرکزی چند شعبه داشته باشد، هر شعبه رکورد مستقل با ساعت کاری خودش دارد.`,
|
||||
`مرکز درمانی مناسب در ${city} را از این فهرست پیدا کنید. هر مرکز صفحهٔ اختصاصی دارد و آنچه آنجا میبینید از رکورد خودِ مرکز میآید: خدمات، تخصصها، بیمههای طرف قرارداد و پزشکانی که پذیرش دارند. موقعیت روی نقشه هم هست تا پیش از مراجعه مسیر و زمان رسیدن را بدانید. نوبتگیری از صفحهٔ مرکز و از طریق پزشک انجام میشود؛ هزینهٔ خدمت پیش از تأیید نمایش داده میشود. لغو نوبت از حساب کاربری ممکن است و بازهٔ لغوشده همان لحظه به فهرست نوبتهای آزاد برمیگردد. برای محدود کردن فهرست میتوانید از فیلتر تخصص استفاده کنید تا فقط مراکزی بمانند که خدمت موردنظرتان را ارائه میدهند. نشانی و شمارهٔ تماس هر مرکز دورهای بازبینی میشود.`,
|
||||
];
|
||||
|
||||
const CLINIC_INTROS = (city) => [
|
||||
`کلینیکها و مراکز درمانی ${city} در این صفحه فهرست شدهاند. برای هر مرکز، تخصصهای ارائهشده، پزشکان همکار، نشانی و اطلاعات تماس نمایش داده میشود. اگر ترجیح میدهید بهجای انتخاب پزشک، ابتدا مرکز درمانی را انتخاب کنید، این فهرست نقطهٔ شروع مناسبی است. از صفحهٔ هر کلینیک میتوانید پزشکان همان مرکز را ببینید و مستقیم برایشان نوبت بگیرید؛ همهٔ مراحل آنلاین و بدون تماس تلفنی انجام میشود. صفحهٔ هر مرکز موقعیت روی نقشه و ساعات کاری را هم نشان میدهد تا پیش از مراجعه، مسیر و زمان را بدانید. مراکزی که بهصورت شبانهروزی پذیرش دارند نیز مشخص شدهاند. برای مقایسهٔ مستقیم پزشکان بهجای مراکز، فهرست پزشکان ${city} گزینهٔ دیگری در اختیارتان میگذارد.`,
|
||||
`این صفحه مراکز درمانی فعال ${city} را معرفی میکند — از کلینیکهای تخصصی تا درمانگاههای چندتخصصی. هر مرکز صفحهٔ اختصاصی خود را دارد که در آن خدمات، بیمههای طرف قرارداد، تخصصهای موجود و فهرست پزشکان همکار آمده است. جستوجو را میتوانید با فیلتر تخصص محدود کنید تا فقط مراکزی را ببینید که خدمت موردنظرتان را ارائه میدهند. رزرو نوبت از همان صفحهٔ مرکز و بهصورت آنلاین انجام میشود و تأییدیه بلافاصله پیامک میگردد. اطلاعات تماس و نشانی هر مرکز بهصورت دورهای بازبینی میشود. اگر مرکزی بیش از یک شعبه دارد، هر شعبه رکورد جداگانهٔ خود را با ساعات کاری مستقل دارد تا انتخاب دقیقتری داشته باشید.`,
|
||||
`برای یافتن مرکز درمانی مناسب در ${city}، فهرست زیر گزینههای موجود را با اطلاعات یکسان کنار هم میگذارد. تفاوت این فهرست با جستوجوی ساده در آن است که هر رکورد به یک صفحهٔ کامل وصل است: موقعیت روی نقشه، ساعات کاری، تخصصها و پزشکانی که در آن مرکز پذیرش دارند. پس از انتخاب مرکز و پزشک، نوبتهای خالی را میبینید و رزرو در همان لحظه نهایی میشود. هزینهٔ هر خدمت پیش از تأیید نمایش داده میشود تا انتخابتان با اطلاع کامل انجام شود. در صورت تغییر برنامه، لغو نوبت از بخش نوبتهای من در حساب کاربری ممکن است و بازهٔ آزادشده بلافاصله در اختیار بیمار دیگری قرار میگیرد.`,
|
||||
`درمانگاهها، کلینیکهای تخصصی و مراکز تصویربرداری ${city} در این فهرست کنار هم آمدهاند. برای هر مرکز میبینید چه تخصصهایی ارائه میشود، کدام پزشکان آنجا پذیرش دارند و ساعات کاری هر روز چگونه است. انتخاب مرکز پیش از انتخاب پزشک وقتی مفید است که به خدمتی نیاز دارید که در یک مرکز مشخص متمرکز است. نوبتگیری از صفحهٔ همان مرکز انجام میشود و نیازی به تماس تلفنی نیست. برای مراکزی که چند تخصص را زیر یک سقف جمع کردهاند، میتوانید در همان مراجعه چند خدمت را پیگیری کنید. فهرست پزشکان هر مرکز با تخصص و اولین نوبت آزادشان نمایش داده میشود تا انتخاب سریعتر باشد. هزینهٔ هر خدمت پیش از تأیید نهایی اعلام میشود و در صورت تغییر برنامه، لغو نوبت از حساب کاربریتان امکانپذیر است.`,
|
||||
`مراکز درمانی ${city} را از این صفحه پیدا کنید و مستقیم نوبت بگیرید. هر مرکز نشانی، شمارهٔ تماس، موقعیت روی نقشه و فهرست پزشکان همکارش را در صفحهٔ اختصاصی خود نشان میدهد. اگر بیمهٔ خاصی دارید، بیمههای طرف قرارداد هر مرکز هم همانجا اعلام شده است. پس از انتخاب پزشک، نوبتهای خالی همان هفته نمایش داده میشود و تأیید رزرو بلافاصله پیامک میگردد. مراکزی که بهصورت شبانهروزی پذیرش دارند جداگانه مشخص شدهاند تا در شرایط اضطراری سریعتر تصمیم بگیرید. اطلاعات تماس و نشانی هر مرکز بهصورت دورهای بازبینی میشود. اگر بهجای مرکز درمانی دنبال یک پزشک مشخص هستید، فهرست پزشکان همان شهر مسیر مستقیمتری در اختیارتان میگذارد.`,
|
||||
`این فهرست مراکز درمانی فعال ${city} را با ساختار یکسان کنار هم میگذارد تا مقایسه ساده باشد. برخی مراکز چند شعبه دارند و هر شعبه رکورد جداگانه با ساعات کاری مستقل خود را دارد؛ پیش از مراجعه، شعبهٔ درست را از روی نشانی و نقشه انتخاب کنید. رزرو، تغییر و لغو نوبت همگی آنلاین و از حساب کاربریتان انجام میشود و بازهٔ لغوشده بلافاصله در اختیار بیمار دیگری قرار میگیرد. صفحهٔ هر مرکز موقعیت روی نقشه را هم نشان میدهد تا پیش از مراجعه مسیر و زمان رسیدن را بدانید. تخصصهای ارائهشده و پزشکان همکار هر مرکز در همان صفحه فهرست شدهاند و از آنجا میتوانید مستقیم نوبت بگیرید، بدون اینکه لازم باشد جداگانه دنبال پزشک بگردید.`,
|
||||
];
|
||||
|
||||
// مقدمهٔ صفحهٔ اصلی هر دامنهٔ شهری.
|
||||
//
|
||||
@@ -40,12 +32,12 @@ const CLINIC_INTROS = (city) => [
|
||||
//
|
||||
// عدد پزشک و تخصص داخل متن میآید تا تمایز فقط لفظی نباشد؛ هر شهر آمار خودش را دارد.
|
||||
const CITY_INTROS = (city, doctorCount, topSpecialty) => [
|
||||
`${city} در حال حاضر ${doctorCount} پزشک فعال روی این سامانه دارد و بیشترین مراجعه به حوزهٔ ${topSpecialty} است. برای هر پزشک، تخصص، محل مطب، ساعات کاری و نوبتهای خالی همینجا نمایش داده میشود و رزرو در همان لحظه قطعی میگردد. اگر نمیدانید به کدام تخصص مراجعه کنید، از فهرست تخصصهای همین صفحه شروع کنید؛ هر رشته مستقیم به پزشکان همان حوزه در ${city} میرسد.`,
|
||||
`دسترسی به پزشک در ${city} از همین صفحه شروع میشود: ${doctorCount} پزشک فعال، با پرمراجعهترین حوزهٔ ${topSpecialty}. نام پزشک یا نام تخصص را در کادر بالا جستوجو کنید، یا از میان تخصصهای پرمراجعهٔ همین شهر انتخاب کنید. نوبتگیری شبانهروزی است و تأییدیه بلافاصله پیامک میشود؛ برای گرفتن نوبت نیازی به تماس تلفنی با مطب نیست.`,
|
||||
`این صفحه نقطهٔ ورود به پزشکان و مراکز درمانی ${city} است. ${doctorCount} پزشک در رشتههای مختلف پذیرش دارند و ${topSpecialty} بیشترین سهم مراجعه را در این شهر دارد. هر پروفایل شامل سابقهٔ فعالیت، نشانی محل پذیرش و بازخورد بیماران پیشین است تا انتخاب با اطلاع کامل انجام شود. رزرو، تغییر و لغو نوبت همگی آنلاین و از حساب کاربری خودتان انجام میشود.`,
|
||||
`نوبت پزشکان ${city} را میتوانید بدون تماس تلفنی و در هر ساعت شبانهروز رزرو کنید. هماکنون ${doctorCount} پزشک روی این سامانه در دسترساند و پرمراجعهترین حوزه در این شهر ${topSpecialty} است. برای هر پزشک، محل پذیرش و ساعتهای خالیِ همان هفته نمایش داده میشود؛ کافی است بازهٔ دلخواهتان را انتخاب کنید تا تأییدیه بلافاصله پیامک شود. مقایسهٔ پزشکان بر اساس تخصص و امتیاز بیماران هم از همین صفحه ممکن است.`,
|
||||
`اگر دنبال پزشک در ${city} هستید، از همینجا شروع کنید. ${doctorCount} پزشک فعال در این شهر ثبت شدهاند و ${topSpecialty} بیشترین مراجعه را به خود اختصاص داده است. جستوجو را میتوانید با نام پزشک یا با نام تخصص انجام دهید؛ نتایج شامل نشانی مطب، ساعات کاری و اولین نوبت آزاد هر پزشک است. برای مراکز درمانی چندتخصصی نیز فهرست جداگانهای در دسترس است که پزشکان هر مرکز را کنار هم نشان میدهد.`,
|
||||
`فهرست پزشکان ${city} با ${doctorCount} پروفایل فعال در این سامانه نگهداری میشود و ${topSpecialty} پرمراجعهترین حوزهٔ درمانی این شهر است. اطلاعات هر پزشک — تخصص، محل پذیرش و ساعات کاری — بهصورت دورهای بازبینی میشود تا با وضعیت واقعی مطب همخوان بماند. نوبتگیری در همان لحظه قطعی میشود و در صورت تغییر برنامه، لغو آن از حساب کاربریتان امکانپذیر است.`,
|
||||
`${doctorCount} پزشک از ${city} روی این سامانه پروفایل دارند. بیشترینشان ${topSpecialty}اند. نام پزشک یا نام تخصص را در کادر بالا بزنید؛ هر دو جستوجو میشوند. اگر هنوز نمیدانید سراغ کدام تخصص بروید، فهرست تخصصهای همین شهر پایینتر آمده و از هر کدام مستقیم به پزشکانش میرسید.`,
|
||||
`نوبت پزشکان ${city} را از همینجا میگیرید، در هر ساعت شبانهروز و بدون تماس با مطب. الان ${doctorCount} پزشک ثبت شدهاند و ${topSpecialty} پرمراجعهترین حوزه است. روی پروفایل هر پزشک، محل پذیرش و بازههای خالی همان هفته را میبینید. انتخاب کنید و تأیید بگیرید؛ پیامک تأییدیه همان لحظه میآید.`,
|
||||
`اینجا نقطهٔ شروع برای پیدا کردن پزشک در ${city} است. ${doctorCount} پروفایل ثبت شده و ${topSpecialty} بیشترین سهم را دارد. هر پروفایل تخصص، نشانی محل پذیرش و امتیاز بیمارانی که قبلاً از همینجا نوبت گرفتهاند را نشان میدهد. رزرو، تغییر و لغو نوبت همه از حساب کاربری خودتان انجام میشود.`,
|
||||
`${city} روی این سامانه ${doctorCount} پزشک دارد و ${topSpecialty} از بقیه پرمراجعهتر است. کادر جستوجو نام پزشک و نام تخصص را با هم میگیرد. اگر ترجیح میدهید اول مرکز درمانی را انتخاب کنید، فهرست کلینیکها جداست و پزشکان هر مرکز را کنار هم نشان میدهد.`,
|
||||
`دنبال پزشک در ${city} میگردید؟ ${doctorCount} پزشک ثبت شدهاند، بیشترشان در حوزهٔ ${topSpecialty}. نتیجهٔ جستوجو نشانی مطب، ساعات کاری و اولین نوبت آزاد هر پزشک را نشان میدهد. پزشکی که فعلاً نوبتدهیاش خاموش است هم میماند، فقط با برچسب مشخص، تا بدانید گزینه هست.`,
|
||||
`فهرست پزشکان ${city} الان ${doctorCount} پروفایل دارد و ${topSpecialty} صدرنشین مراجعههاست. اطلاعات هر پزشک — تخصص، محل پذیرش، ساعت کاری — دورهای بازبینی میشود تا با وضعیت واقعی مطب بخواند. نوبت با تأیید شما قطعی میشود و اگر برنامهتان عوض شد، لغوش از همان حساب ممکن است.`,
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -76,13 +68,6 @@ const countSentence = (count, cityName, noun) =>
|
||||
? ` هماکنون ${Number(count)} ${noun} در ${cityName} روی این سامانه ثبت شدهاند.`
|
||||
: "";
|
||||
|
||||
export function buildDoctorsIntro(cityName, doctorCount = 0) {
|
||||
return (
|
||||
pick(DOCTOR_INTROS(cityName), hash(cityName)) +
|
||||
countSentence(doctorCount, cityName, "پزشک")
|
||||
);
|
||||
}
|
||||
|
||||
export function buildClinicsIntro(cityName, clinicCount = 0) {
|
||||
return (
|
||||
pick(CLINIC_INTROS(cityName), hash(cityName) >>> 2) +
|
||||
|
||||
+33
-22
@@ -22,34 +22,45 @@ function hash(...parts) {
|
||||
// میشدند و ایندکس منفی به undefined میرسید.
|
||||
const pick = (variants, seed) => variants[(seed >>> 0) % variants.length];
|
||||
|
||||
// متنها عمداً ریتم یکنواخت ندارند: بعضی جملهها کوتاه و خبریاند و بعضی بلندتر.
|
||||
// حرفهای ربطِ قالبی («به همین دلیل»، «در نهایت»، «لازم به ذکر است») و ادعاهای
|
||||
// تبلیغاتیِ بیپشتوانه کنار گذاشته شدهاند؛ هر جمله به چیزی اشاره میکند که واقعاً
|
||||
// روی همین صفحه هست: فیلدهای پروفایل، تقویم نوبت، محلهای پذیرش، هزینه و لغو.
|
||||
|
||||
function openingVariants(specialty, city) {
|
||||
return [
|
||||
`اگر به دنبال متخصص ${specialty} در ${city} هستید، این صفحه فهرست کاملی از پزشکان فعال این حوزه را در اختیار شما میگذارد. هر پروفایل شامل تخصصها، سوابق، محل مطب و امتیاز واقعی بیماران است تا بتوانید پیش از رزرو نوبت، انتخاب آگاهانهتری داشته باشید.`,
|
||||
`انتخاب پزشک ${specialty} در ${city} وقتی سادهتر میشود که همهٔ گزینهها را یکجا و با اطلاعات یکسان ببینید. در این صفحه، متخصصان ${specialty} شهر ${city} همراه با نشانی مطب، ساعات پذیرش و بازخورد مراجعان گردآوری شدهاند.`,
|
||||
`دسترسی به متخصص ${specialty} در ${city} دیگر نیازی به تماسهای پیدرپی و مراجعهٔ حضوری برای گرفتن نوبت ندارد. فهرست زیر پزشکان این تخصص را در ${city} نشان میدهد؛ از هر پروفایل میتوانید مستقیم و آنلاین نوبت بگیرید.`,
|
||||
`این صفحه به معرفی پزشکان ${specialty} در ${city} اختصاص دارد. هدف، کوتاهکردن مسیر میان «جستوجوی یک متخصص خوب» و «داشتن نوبت قطعی» است؛ بنابراین اطلاعات هر پزشک بهشکلی چیده شده که مقایسه میان گزینهها سریع انجام شود.`,
|
||||
`پزشکان ${specialty} ${city} اینجا فهرست شدهاند. هر کارت نام پزشک، درجهٔ تخصصی، محل پذیرش و اولین نوبت آزادش را نشان میدهد. اگر دنبال پزشک مشخصی هستید، کادر جستوجوی بالای صفحه نام پزشک و نام تخصص را با هم میگیرد. فیلترها هم هست: جنسیت پزشک، درجهٔ علمی، و اینکه فقط پزشکان دارای نوبت آزاد را ببینید.`,
|
||||
`این فهرست متخصصان ${specialty} را در ${city} نشان میدهد. ترتیب نمایش تصادفی نیست؛ پزشکانی که هماکنون نوبت خالی دارند بالاتر میآیند و بعد از آن امتیاز بیماران تعیینکننده است. روی هر کارت، تخصص و محل مطب پیداست، پس لازم نیست برای مقایسهٔ دو پزشک دو صفحه باز کنید. صفحهبندی هم دارد، پس فهرست بلند در یک صفحه فشرده نمیشود.`,
|
||||
`برای پیدا کردن متخصص ${specialty} در ${city} از همین صفحه شروع کنید. کارت هر پزشک تخصص، محل پذیرش، امتیاز مراجعان و وضعیت نوبتدهی را کنار هم میگذارد. پزشکی که نوبت آزاد ندارد هم نمایش داده میشود، با برچسب مشخص، تا بدانید گزینه هست ولی فعلاً در دسترس نیست. فیلترها روی نشانی صفحه ثبت میشوند، پس لینک همین نما را میتوانید نگه دارید.`,
|
||||
`فهرست زیر پزشکان ${specialty} شهر ${city} است. آنچه در هر کارت میبینید از پروفایل خودِ پزشک میآید: درجهٔ تخصصی، محل یا محلهای پذیرش، و امتیازی که بیماران قبلی ثبت کردهاند. برای دیدن ساعات کاری و تقویم نوبت، وارد پروفایل شوید. اگر ${specialty} زیرشاخه دارد، نوار بالای صفحه آنها را نشان میدهد و میتوانید فهرست را به یکی از زیرشاخهها محدود کنید یا روی کل گروه بمانید.`,
|
||||
`متخصص ${specialty} در ${city} کم نیست و همین انتخاب را سخت میکند. این صفحه اطلاعات همه را به یک شکل نشان میدهد تا مقایسه ممکن باشد: تخصص، محل مطب، امتیاز، و اینکه نزدیکترین نوبت خالی کِی است. جستوجو با نام تخصص هم کار میکند، نه فقط نام پزشک؛ پزشکی که چند تخصص دارد با هر کدامشان پیدا میشود.`,
|
||||
`اگر تازه دنبال پزشک ${specialty} در ${city} میگردید، از فهرست پایین شروع کنید. هر کارت خلاصهای از پروفایل است و با یک کلیک به صفحهٔ کامل پزشک میرسید. آنجا محلهای پذیرش، ساعات کاری هر محل و تقویم نوبتهای خالی را میبینید. پزشکی که فعلاً نوبتدهیاش خاموش است هم در فهرست میماند، فقط با برچسب مشخص.`,
|
||||
];
|
||||
}
|
||||
|
||||
function bodyVariants(specialty, city, doctorCount) {
|
||||
const countPhrase =
|
||||
doctorCount > 0
|
||||
? `در حال حاضر ${doctorCount} پزشک ${specialty} در ${city} در این سامانه ثبت شدهاند`
|
||||
: `فهرست پزشکان ${specialty} در ${city} بهطور مداوم بهروزرسانی میشود`;
|
||||
? `${doctorCount} پزشک ${specialty} در ${city} روی این سامانه پروفایل دارند`
|
||||
: `فهرست پزشکان ${specialty} در ${city} در حال تکمیل است`;
|
||||
|
||||
return [
|
||||
`${countPhrase}. برای هر پزشک، مواردی مانند مدرک و درجهٔ تخصصی، کد نظام پزشکی، خدمات قابل ارائه و موقعیت مکانی مطب نمایش داده میشود. امتیازها و نظرها از مراجعان واقعی همان پزشک جمعآوری شدهاند، نه از منابع عمومی؛ به همین دلیل تصویر دقیقتری از کیفیت خدمات به دست میدهند.`,
|
||||
`${countPhrase} و اطلاعات آنها بهصورت دورهای بازبینی میشود. تفاوت این فهرست با جستوجوی ساده در آن است که هر رکورد به یک پروفایل کامل وصل است: خدمات، محلهای پذیرش، ساعات کاری هر محل و امکان رزرو مستقیم. نتیجه آنکه مقایسهٔ چند پزشک در چند دقیقه ممکن میشود.`,
|
||||
`${countPhrase}. برخی از این پزشکان بیش از یک محل پذیرش دارند — مطب شخصی و یک یا چند کلینیک — و ساعات کاری هر محل جداگانه اعلام شده است. هنگام رزرو، محل مراجعه را خودتان انتخاب میکنید تا نوبتی که میگیرید با برنامهٔ رفتوآمد شما هماهنگ باشد.`,
|
||||
`${countPhrase}. کد نظام پزشکی هر پزشک روی پروفایلش درج شده و میتوانید آن را جداگانه راستیآزمایی کنید. امتیازها از بیمارانی میآید که از همین سامانه نوبت گرفتهاند، نه از نظرسنجی عمومی. پزشکی که هنوز نظری برایش ثبت نشده، امتیاز خالی نشان میدهد؛ عدد ساختگی جایگزینش نمیشود.`,
|
||||
`${countPhrase} و اطلاعاتشان دورهای بازبینی میشود. بخشی از این پزشکان بیش از یک محل پذیرش دارند: مطب شخصی و یک یا چند کلینیک. ساعات کاری هر محل جداست و هنگام رزرو خودتان انتخاب میکنید کجا مراجعه کنید. این را در تقویم نوبت هم میبینید، چون بازههای خالی هر محل فرق دارد.`,
|
||||
`${countPhrase}. خدماتی که هر پزشک ارائه میدهد روی پروفایلش فهرست شده — از ویزیت ساده تا اقدامهای تخصصیتر. هزینهٔ هر خدمت پیش از تأیید نهایی نوبت نمایش داده میشود، پس لازم نیست برای پرسیدن قیمت تماس بگیرید. اگر پزشک در کلینیک پذیرش داشته باشد، بیمههای طرف قرارداد آن مرکز روی صفحهٔ خودِ کلینیک آمده است.`,
|
||||
`${countPhrase}. زیرتخصصها هم جدا مشخص شدهاند. اگر روی صفحهٔ یک گروه تخصصی هستید، پزشکانی که فقط در زیرشاخههای آن کار میکنند هم در همین فهرست میآیند؛ برای محدود کردن، از فهرست زیرتخصصهای بالای صفحه استفاده کنید. پزشکی که چند زیرتخصص دارد، همه را روی پروفایلش نشان میدهد نه فقط یکی را.`,
|
||||
`${countPhrase}. موقعیت مطب هر پزشک روی نقشه هم قابل دیدن است. اگر چند گزینه شبیه هم بودند، معمولاً همین فاصله و ساعت کاری تعیینکننده میشود. برای پزشکانی که در کلینیک پذیرش دارند، صفحهٔ خودِ کلینیک هم نشانی و شمارهٔ تماس را نشان میدهد و مسیر رسیدن روشنتر است.`,
|
||||
];
|
||||
}
|
||||
|
||||
function closingVariants(specialty, city) {
|
||||
return [
|
||||
`پس از انتخاب پزشک، تقویم نوبتهای خالی نمایش داده میشود و رزرو در همان لحظه قطعی میگردد؛ پیامک تأیید نیز برایتان ارسال خواهد شد. اگر برنامهتان تغییر کرد، لغو نوبت از بخش نوبتهای من در حساب کاربری ممکن است و آن بازهٔ زمانی بلافاصله برای بیمار دیگری آزاد میشود. اگر تخصص موردنظرتان ${specialty} نیست، از فهرست تخصصهای ${city} میتوانید حوزهٔ درمانی دیگری را دنبال کنید و همان مسیر رزرو را طی کنید.`,
|
||||
`نوبتگیری در همین صفحه انجام میشود: تاریخ و ساعت خالی را میبینید، انتخاب میکنید و تأیید نهایی را دریافت میکنید. هزینهٔ هر خدمت پیش از تأیید نمایش داده میشود تا انتخابتان با اطلاع کامل انجام شود. برای حوزههای درمانی دیگر در ${city}، صفحهٔ تخصصها فهرست کامل رشتهها را در اختیارتان میگذارد و از هر رشته میتوانید مستقیم به پزشکان همان حوزه برسید.`,
|
||||
`تمام مراحل — از مقایسهٔ پزشکان ${specialty} تا دریافت تأییدیهٔ نوبت — آنلاین و بدون مراجعهٔ حضوری طی میشود؛ نیازی به تماس تلفنی در ساعات اداری نیست و رزرو شبانهروزی انجام میگیرد. کلینیکها و مراکز درمانی ${city} نیز صفحهٔ اختصاصی خود را دارند و اگر ترجیح میدهید ابتدا مرکز درمانی را انتخاب کنید، از همان مسیر قابل رزرو هستند.`,
|
||||
`برای رزرو کافی است روی پروفایل پزشک بزنید و از میان نوبتهای خالی یکی را انتخاب کنید؛ تأییدیه بلافاصله صادر و پیامک میشود. سابقهٔ نوبتهای شما در حساب کاربری باقی میماند و مراجعهٔ بعدی به همان پزشک سریعتر انجام میشود. اگر ترجیح میدهید بر اساس مرکز درمانی جستوجو کنید، فهرست کلینیکهای ${city} گزینهٔ مناسبی برای شروع است.`,
|
||||
`رزرو داخل پروفایل انجام میشود: تقویم نوبتهای خالی را میبینید، یک بازه را انتخاب میکنید و تأییدیه پیامک میشود. اگر برنامهتان به هم خورد، لغو از بخش نوبتهای من ممکن است و آن بازه بلافاصله برای بیمار دیگری آزاد میشود. سابقهٔ نوبتها هم در همان حساب میماند.`,
|
||||
`نوبتگیری شبانهروزی است. لازم نیست منتظر ساعت اداری بمانید یا با منشی مطب تماس بگیرید. بعد از تأیید، نوبت در حساب کاربریتان ثبت میماند و دفعهٔ بعد که به همان پزشک مراجعه کنید، کارتان کوتاهتر است. اگر پزشک چند محل پذیرش دارد، محلی که انتخاب کردهاید هم روی همان نوبت ثبت میشود.`,
|
||||
`اگر تخصص موردنظرتان ${specialty} نبود، فهرست تخصصهای ${city} رشتههای دیگر را نشان میدهد و مسیر رزرو همهجا یکی است. برای شروع از سمت مرکز درمانی بهجای پزشک هم صفحهٔ کلینیکهای ${city} هست؛ آنجا پزشکان هر مرکز کنار هم آمدهاند و از همان صفحه هم میشود نوبت گرفت.`,
|
||||
`پیش از تأیید، هزینهٔ خدمتی که انتخاب کردهاید نمایش داده میشود. تأییدیه بلافاصله پیامک میگردد و شمارهٔ نوبت در حساب کاربری میماند. لغو هم از همانجا انجام میشود. اگر پزشک برای خدمت خاصی مدتزمان متفاوتی تعریف کرده باشد، طول نوبت هم پیش از تأیید مشخص است.`,
|
||||
`پزشکانی که در کلینیک پذیرش دارند از صفحهٔ همان کلینیک هم قابل رزروند. اگر ترجیح میدهید اول مرکز درمانی را انتخاب کنید و بعد پزشک را، فهرست کلینیکهای ${city} نقطهٔ شروع دیگری است. نتیجهٔ رزرو در هر دو مسیر یکی است و تأییدیه به همان شکل پیامک میشود.`,
|
||||
`یک نکتهٔ کاربردی: اگر پزشک بیش از یک محل پذیرش دارد، پیش از انتخاب بازه محل را تعیین کنید؛ نوبتهای خالی هر محل جدا محاسبه میشود. تأییدیه پیامک میشود و لغو تا پیش از زمان نوبت امکان دارد. بازهای که لغو کنید همان لحظه در فهرست نوبتهای آزاد برمیگردد.`,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -69,13 +80,13 @@ export function buildDoctorFaq(doctorName, specialtyName, cityName) {
|
||||
return [
|
||||
{
|
||||
question: `چگونه از ${who} نوبت بگیرم؟`,
|
||||
answer: `از همین صفحه، محل مراجعه و سپس تاریخ و ساعت خالی موردنظرتان را انتخاب کنید. رزرو در همان لحظه قطعی میشود و تأییدیه برایتان پیامک خواهد شد.`,
|
||||
answer: `اول محل مراجعه را از همین صفحه انتخاب کنید، بعد از تقویم، تاریخ و ساعتی که خالی است. رزرو با تأیید شما قطعی میشود و پیامک تأییدیه میآید. نیازی به تماس تلفنی نیست.`,
|
||||
},
|
||||
...(specialtyName
|
||||
? [
|
||||
{
|
||||
question: `تخصص ${who} چیست؟`,
|
||||
answer: `${who} در حوزهٔ ${specialtyName} فعالیت میکند. فهرست کامل خدمات قابل ارائه در همین صفحه آمده است.`,
|
||||
answer: `${who} در حوزهٔ ${specialtyName} کار میکند. اگر تخصص دیگری هم داشته باشد، بالای همین صفحه کنار نامش آمده. خدماتی که ارائه میدهد پایینتر فهرست شده است.`,
|
||||
},
|
||||
]
|
||||
: []),
|
||||
@@ -83,13 +94,13 @@ export function buildDoctorFaq(doctorName, specialtyName, cityName) {
|
||||
? [
|
||||
{
|
||||
question: `مطب ${who} در کدام شهر است؟`,
|
||||
answer: `محل یا محلهای پذیرش ${who} در ${cityName} به همراه نشانی دقیق و ساعات کاری هر محل، در بخش موقعیت مکانی همین صفحه نمایش داده شده است.`,
|
||||
answer: `در ${cityName}. نشانی دقیق و ساعات کاری در بخش موقعیت مکانی همین صفحه آمده و اگر بیش از یک محل پذیرش داشته باشد، هر کدام جداگانه با ساعت کاری خودش فهرست شده است.`,
|
||||
},
|
||||
]
|
||||
: []),
|
||||
{
|
||||
question: `امکان لغو نوبت وجود دارد؟`,
|
||||
answer: `بله. از بخش نوبتهای من در حساب کاربریتان میتوانید نوبت را لغو کنید؛ لغو زودهنگام آن بازهٔ زمانی را برای بیمار دیگری آزاد میکند.`,
|
||||
answer: `بله، از بخش نوبتهای من در حساب کاربری. هرچه زودتر لغو کنید آن بازه سریعتر آزاد میشود و بیمار دیگری میتواند رزروش کند.`,
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -111,22 +122,22 @@ export function buildSpecialtyFaq(
|
||||
return [
|
||||
{
|
||||
question: `چطور میتوان از متخصص ${specialtyName} در ${place} نوبت گرفت؟`,
|
||||
answer: `از فهرست همین صفحه پزشک موردنظرتان را انتخاب کنید، وارد پروفایل او شوید و از تقویم نوبتهای خالی، تاریخ و ساعت دلخواه را ثبت کنید. رزرو در همان لحظه قطعی میشود و تأییدیه برایتان پیامک میشود.`,
|
||||
answer: `از فهرست همین صفحه پزشک را انتخاب کنید و وارد پروفایلش شوید. آنجا تقویم نوبتهای خالی را میبینید؛ یک بازه را بزنید و تأیید کنید. تأییدیه همان لحظه پیامک میشود. اگر پزشک چند محل پذیرش دارد، اول محل را انتخاب کنید چون نوبتهای خالی هر محل جداست.`,
|
||||
},
|
||||
{
|
||||
question: `چند پزشک ${specialtyName} در ${place} در دسترس است؟`,
|
||||
answer:
|
||||
doctorCount > 0
|
||||
? `در حال حاضر ${doctorCount} پزشک ${specialtyName} در ${place} در این سامانه ثبت شدهاند. این عدد با افزودهشدن پزشکان جدید بهروزرسانی میشود.`
|
||||
: `فهرست پزشکان ${specialtyName} در ${place} در حال تکمیل است و بهمرور پزشکان جدید به آن افزوده میشوند.`,
|
||||
? `${doctorCount} پزشک ${specialtyName} در ${place} روی این سامانه پروفایل دارند. همهٔ آنها لزوماً همیشه نوبت آزاد ندارند؛ کارت هر پزشک وضعیت نوبتدهیاش را نشان میدهد.`
|
||||
: `هنوز پزشکی با تخصص ${specialtyName} در ${place} روی سامانه ثبت نشده. میتوانید از فهرست تخصصها حوزهٔ نزدیکتری را ببینید یا شهر دیگری را امتحان کنید.`,
|
||||
},
|
||||
{
|
||||
question: `هزینهٔ ویزیت متخصص ${specialtyName} چقدر است؟`,
|
||||
answer: `هزینهٔ ویزیت به نوع خدمت، درجهٔ تخصصی پزشک و پوشش بیمه بستگی دارد. مبلغ هر خدمت پیش از تأیید نهایی نوبت، در همان صفحهٔ رزرو نمایش داده میشود.`,
|
||||
answer: `عدد ثابتی ندارد و به خدمتی که انتخاب میکنید، درجهٔ تخصصی پزشک و بیمهای که دارید بستگی دارد. مبلغ پیش از تأیید نهایی روی همان صفحهٔ رزرو نمایش داده میشود، پس قبل از قطعیشدن نوبت میدانید چقدر است.`,
|
||||
},
|
||||
{
|
||||
question: `اگر نتوانم در زمان نوبت مراجعه کنم چه کنم؟`,
|
||||
answer: `از بخش نوبتهای من در حساب کاربریتان میتوانید نوبت را لغو کنید. لغو زودهنگام باعث میشود آن بازهٔ زمانی برای بیمار دیگری آزاد شود.`,
|
||||
answer: `از بخش نوبتهای من در حساب کاربریتان نوبت را لغو کنید. هرچه زودتر لغو کنید، آن بازه سریعتر در فهرست نوبتهای آزاد برمیگردد و بیمار دیگری میتواند رزروش کند.`,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { buildSpecialtyFaq, buildSpecialtyIntro } from "@/lib/specialtyContent";
|
||||
import { buildClinicsIntro, buildDoctorsIntro } from "@/lib/listingIntro";
|
||||
import { buildClinicsIntro } from "@/lib/listingIntro";
|
||||
|
||||
const words = (text) => text.trim().split(/\s+/).length;
|
||||
|
||||
@@ -28,18 +28,19 @@ describe("متن مقدمهٔ تخصص (M2)", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("متن مقدمهٔ صفحات لیست (M2)", () => {
|
||||
it("بین ۱۵۰ تا ۳۰۰ کلمه", () => {
|
||||
// متن /doctors حذف شد — آن صفحه فقط کارت پزشکها را نشان میدهد، پس
|
||||
// buildDoctorsIntro و مخزن متنش هم برداشته شدند. اینجا فقط /clinics میماند.
|
||||
describe("متن مقدمهٔ صفحهٔ کلینیکها (M2)", () => {
|
||||
it("بین ۱۰۰ تا ۳۰۰ کلمه", () => {
|
||||
for (const city of CITIES) {
|
||||
for (const text of [buildDoctorsIntro(city), buildClinicsIntro(city)]) {
|
||||
expect(words(text), `${city} = ${words(text)}`).toBeGreaterThanOrEqual(100);
|
||||
expect(words(text), `${city} = ${words(text)}`).toBeLessThanOrEqual(300);
|
||||
}
|
||||
const text = buildClinicsIntro(city);
|
||||
expect(words(text), `${city} = ${words(text)}`).toBeGreaterThanOrEqual(100);
|
||||
expect(words(text), `${city} = ${words(text)}`).toBeLessThanOrEqual(300);
|
||||
}
|
||||
});
|
||||
|
||||
it("ساختار متن بین شهرها متفاوت است", () => {
|
||||
const texts = CITIES.map(buildDoctorsIntro);
|
||||
const texts = CITIES.map((city) => buildClinicsIntro(city));
|
||||
expect(new Set(texts).size).toBe(CITIES.length);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user