تخطَّ إلى المحتوى الرئيسي

توثيق الموديولز

حالات اختبار الجودة

حالات اختبار وظيفية، واجهة، تجاوب، RTL، SEO.

مكتمل

الـ QC للتقويم يغطّي 6 أسطح × 16 دولة × 17 فئة. حالات الاختبار تتجَمَّع في: التوجيه (كل الـ 14 مسار تُرجع 200)، الرسم (شارات الحالة تُحتسَب صحيحاً)، سلامة البيانات (IDs cross-module تُحلّ)، دقّة الـ schema (JSON-LD يتحقّق مقابل schema.org)، تكافؤ اللغة (EN + AR يُرسَمان عند تغطية كاملة)، وإمكانية الوصول (تنقّل لوحة المفاتيح + تسميات قارئ الشاشة).

اختبارات التوجيه

  • /calendar يُرجع 200 في EN + AR.
  • /calendar/events يُرجع 200 مع كل الفعاليات مرئية.
  • كل واحد من الـ 16 مسار /calendar/events/countries/:slug يُرجع 200.
  • كل واحد من الـ 17 مسار /calendar/events/categories/:slug يُرجع 200.
  • slug مجهول تحت /calendar/events/:slug يُرجع 404 (ليس 500) ويُرسم تخطيط not-found.
  • /calendar/submit يُرجع 200 مع النموذج تفاعلي.

اختبارات شارة الحالة

  • فعالية بـ startDate في المستقبل + لا موعد → badge="upcoming".
  • فعالية بـ applicationDeadline خلال 3 أيام → badge="closing-soon" مع صبغة warning.
  • فعالية بـ startDate=now-1h، endDate=now+2h → badge="live" مع حركة نبضة.
  • فعالية بـ endDate=أمس → badge="completed" مع صبغة فاقدة التشبّع.
  • محرّر يضبط status="cancelled" → الشارة تعرض "cancelled" + الـ CTAs مُعطَّلة + JSON-LD eventStatus=EventCancelled.

اختبارات سلامة البيانات

  • كل relatedFounderId يُحلّ لمؤسّس موجود في mock-founders. الـ IDs المكسورة تُجرَّد بصمت.
  • تفرّد الـ slug: لا فعالييتان تشاركان slug عبر مجموعة البيانات.
  • الحقول المطلوبة لكل نموذج: غياب أيّ حقل مطلوب يُفشل البناء (TypeScript يلتقط عند الترجمة).
  • mode='online' بدون onlineUrl، أو mode='physical' بدون venue/city: المحرّر يُعلِّم عند حفظ admin.

اختبارات دقّة الـ schema

  • JSON-LD صفحة التفاصيل يتحقّق مقابل Google Rich Results Test for Event.
  • eventAttendanceMode يطابق حقل mode (offline/online/mixed).
  • organizer.@type=Organization مع name + url موجودَيْن.
  • location هو Place (physical) أو VirtualLocation (online) — لا غائب.