الاختبارات
اختبارات الوحدة، واختبارات أمان قاعدة البيانات، واختبار الدخان من طرف إلى طرف.
| الأمر | ماذا يغطيه | يحتاج إلى |
|---|---|---|
pnpm test | اختبارات الوحدة: قواعد الأسعار، والمتجر (السلة والموافقة والطلبات)، ومستويات الوصول، ومولّد العرض التجريبي، ومحرك اختبار النص | لا شيء |
pnpm test:rls | اختبار واحد لكل ثابت أمني، بما في ذلك كتابات يجب أن تفشل | Supabase محلي يعمل وقد أُعيد ضبطه |
pnpm test:e2e | اختبار دخان Playwright للعرض التجريبي، مع حجب شبكة الطرف الثالث | Playwright وChrome |
اختبارات الوحدة
pnpm testتتحقق هذه، بين أمور أخرى، من أن كل خطة وحزمة وإضافة تُدرج عند $290 في الشهر أو دونه، ومن أن المتوسطات مثل مدة المعالجة لا تُجمع أبدًا عبر الأيام.
تتحقق اختبارات المتجر (pnpm --filter @callwise/store test) من رفض طلب بلا موافقة، ومن تخزين الموافقة مع طابعها الزمني وإصدار الشروط ونصها الحرفي، ومن صحة تواريخ بدء المدة وانتهائها وتجديدها، ومن أن إجمالي الطلب يساوي عرض السعر السنوي، ومن رفض الإضافات غير المتوافقة، ومن عدم وجود مسار استرداد. وللأسبوع المجاني تتحقق من أن الطلب الأول يحصّل $0 اليوم ويخزّن تاريخي التجربة وأول تحصيل، ومن أن طلبًا ثانيًا للبريد نفسه لا يحصل على تجربة ويُحصَّل اليوم، ومن أن مهمة اليوم 7 تحصّل مرة واحدة (تُشغَّل مرتين، وتحصيل واحد)، ولا تحصّل أبدًا قبل اليوم 7 ولا تجربة ملغاة، ومن أن الإلغاء أثناء التجربة لا يحصّل شيئًا وأن الإلغاء بعد أول تحصيل يُرفض، ومن أن بيانات البطاقة لا تُخزَّن كاملة أبدًا.
اختبارات أمان قاعدة البيانات
pnpm supabase:web:start
pnpm supabase:web:reset
pnpm test:rlsيسجّل كل اختبار الدخول بصفته مستخدمًا مبذورًا ويحاول شيئًا تمنعه القواعد: عضو ينشر نصًا، أو مالك يرفع خطته بنفسه، أو مستخدم يقرأ مكالمات مساحة عمل أخرى. ينجح الاختبار عندما يرفض Postgres.
من طرف إلى طرف
pnpm test:e2eيفتح العرض التجريبي في متصفح وينقر عبر الصفحات الرئيسية. تُحجب الطلبات إلى أي مضيف خارجي، فيُثبت الاختبار أيضًا أن العرض التجريبي لا يجري مكالمات خارجية.