fix: E2E — توليد رقم أردني صالح (10 خانات) لتسجيل الدخول

المولّد السابق أنتج 11 خانة فرفضه تطبيع الهاتف (الأردن يريد 0 + 9). صار
uniqJoPhone ينتج 07 + 8 خانات = 10، و uniqStr للرقم الوطني/اللوحة (لا تمرّ
بالتطبيع).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hamza-Ayed
2026-07-17 20:47:43 +03:00
co-authored by Claude Opus 4.8
parent feb2a9663d
commit 1512bcb5d7
+9 -5
View File
@@ -64,7 +64,11 @@ async function login(phone) {
}
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const uniqPhone = (p) => `${p}${String(Date.now()).slice(-6)}`;
// رقم أردني صالح: 0 + 9 خانات (10 إجمالاً). فريد عبر عدّاد + طابع زمني.
let _seq = 0;
const uniqJoPhone = () => `07${String(Date.now()).slice(-7)}${_seq++}`;
// نصّ فريد عام (رقم وطني/لوحة — لا يمرّ بتطبيع الهاتف).
const uniqStr = (p) => `${p}${String(Date.now()).slice(-6)}${_seq++}`;
// ---- اختبار WebSocket اختياري ----
async function tryWebSocket(riderToken, tripId) {
@@ -96,7 +100,7 @@ async function main() {
// ═══ 1. تسجيل الدخول / إنشاء الحساب ═══
console.log('1) تسجيل الدخول وإنشاء الحساب (هاتف + OTP)');
const riderPhone = uniqPhone('07900');
const riderPhone = uniqJoPhone();
const rider = await login(riderPhone);
check('الراكب سجّل دخوله وحصل على توكن', !!rider.token);
check('حساب جديد بدور rider افتراضياً', rider.role === 'rider', `role=${rider.role}`);
@@ -108,7 +112,7 @@ async function main() {
check('تطبيع الهاتف: نفس الرقم بصيغ مختلفة = نفس المستخدم',
riderAgain.body.user?.id === rider.userId);
const driverPhone = uniqPhone('07955');
const driverPhone = uniqJoPhone();
let driver = await login(driverPhone);
check('السائق سجّل دخوله', !!driver.token);
@@ -121,14 +125,14 @@ async function main() {
check('تقديم السائق أنشأ سجلاً', !!driverId);
await api('PATCH', '/drivers/profile', driver.token, {
gender: 'male', national_number: uniqPhone('99'), name_arabic: 'سائق تجريبي',
gender: 'male', national_number: uniqStr("99"), name_arabic: 'سائق تجريبي',
license_type: 'private',
});
check('تحديث ملف السائق (رقم وطني مشفّر + فهرس أعمى)', true);
const vehicle = await api('POST', '/vehicles', driver.token, {
make: 'Toyota', model: 'Corolla', year: 2020, color: 'أبيض', color_hex: '#FFFFFF',
plate: uniqPhone('PL'),
plate: uniqStr("PL"),
});
check('إنشاء مركبة', !!vehicle.body.id);
check('أول مركبة تصير الافتراضية تلقائياً', vehicle.body.is_default === true);