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:
co-authored by
Claude Opus 4.8
parent
feb2a9663d
commit
1512bcb5d7
@@ -64,7 +64,11 @@ async function login(phone) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
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 اختياري ----
|
// ---- اختبار WebSocket اختياري ----
|
||||||
async function tryWebSocket(riderToken, tripId) {
|
async function tryWebSocket(riderToken, tripId) {
|
||||||
@@ -96,7 +100,7 @@ async function main() {
|
|||||||
|
|
||||||
// ═══ 1. تسجيل الدخول / إنشاء الحساب ═══
|
// ═══ 1. تسجيل الدخول / إنشاء الحساب ═══
|
||||||
console.log('1) تسجيل الدخول وإنشاء الحساب (هاتف + OTP)');
|
console.log('1) تسجيل الدخول وإنشاء الحساب (هاتف + OTP)');
|
||||||
const riderPhone = uniqPhone('07900');
|
const riderPhone = uniqJoPhone();
|
||||||
const rider = await login(riderPhone);
|
const rider = await login(riderPhone);
|
||||||
check('الراكب سجّل دخوله وحصل على توكن', !!rider.token);
|
check('الراكب سجّل دخوله وحصل على توكن', !!rider.token);
|
||||||
check('حساب جديد بدور rider افتراضياً', rider.role === 'rider', `role=${rider.role}`);
|
check('حساب جديد بدور rider افتراضياً', rider.role === 'rider', `role=${rider.role}`);
|
||||||
@@ -108,7 +112,7 @@ async function main() {
|
|||||||
check('تطبيع الهاتف: نفس الرقم بصيغ مختلفة = نفس المستخدم',
|
check('تطبيع الهاتف: نفس الرقم بصيغ مختلفة = نفس المستخدم',
|
||||||
riderAgain.body.user?.id === rider.userId);
|
riderAgain.body.user?.id === rider.userId);
|
||||||
|
|
||||||
const driverPhone = uniqPhone('07955');
|
const driverPhone = uniqJoPhone();
|
||||||
let driver = await login(driverPhone);
|
let driver = await login(driverPhone);
|
||||||
check('السائق سجّل دخوله', !!driver.token);
|
check('السائق سجّل دخوله', !!driver.token);
|
||||||
|
|
||||||
@@ -121,14 +125,14 @@ async function main() {
|
|||||||
check('تقديم السائق أنشأ سجلاً', !!driverId);
|
check('تقديم السائق أنشأ سجلاً', !!driverId);
|
||||||
|
|
||||||
await api('PATCH', '/drivers/profile', driver.token, {
|
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',
|
license_type: 'private',
|
||||||
});
|
});
|
||||||
check('تحديث ملف السائق (رقم وطني مشفّر + فهرس أعمى)', true);
|
check('تحديث ملف السائق (رقم وطني مشفّر + فهرس أعمى)', true);
|
||||||
|
|
||||||
const vehicle = await api('POST', '/vehicles', driver.token, {
|
const vehicle = await api('POST', '/vehicles', driver.token, {
|
||||||
make: 'Toyota', model: 'Corolla', year: 2020, color: 'أبيض', color_hex: '#FFFFFF',
|
make: 'Toyota', model: 'Corolla', year: 2020, color: 'أبيض', color_hex: '#FFFFFF',
|
||||||
plate: uniqPhone('PL'),
|
plate: uniqStr("PL"),
|
||||||
});
|
});
|
||||||
check('إنشاء مركبة', !!vehicle.body.id);
|
check('إنشاء مركبة', !!vehicle.body.id);
|
||||||
check('أول مركبة تصير الافتراضية تلقائياً', vehicle.body.is_default === true);
|
check('أول مركبة تصير الافتراضية تلقائياً', vehicle.body.is_default === true);
|
||||||
|
|||||||
Reference in New Issue
Block a user