# دليل تشغيل اختبارات Category

## 🚀 تشغيل سريع

### تشغيل جميع اختبارات Category
```bash
php artisan test --filter=Category
```

### تشغيل كل ملف على حدة

```bash
# الاختبارات الأساسية (65 اختبار)
php artisan test tests/Feature/CategoryTest.php

# اختبارات الأداء والأمان (30 اختبار)
php artisan test tests/Feature/CategoryPerformanceSecurityTest.php

# اختبارات أمان الملفات (25 اختبار)
php artisan test tests/Feature/CategoryFileSecurityTest.php
```

---

## 📊 تشغيل مع خيارات متقدمة

### عرض تفاصيل كل اختبار
```bash
php artisan test --filter=Category --verbose
```

### إيقاف عند أول فشل
```bash
php artisan test --filter=Category --stop-on-failure
```

### تشغيل متوازي (أسرع)
```bash
php artisan test --filter=Category --parallel
```

### عرض التغطية
```bash
php artisan test --filter=Category --coverage
```

---

## 🔍 تشغيل اختبارات محددة

### اختبارات المصادقة فقط
```bash
php artisan test --filter=unauthenticated
```

### اختبارات الأداء فقط
```bash
php artisan test --filter=Performance
```

### اختبارات الأمان فقط
```bash
php artisan test --filter=Security
```

### اختبار واحد محدد
```bash
php artisan test --filter=authorized_user_can_create_category_successfully
```

---

## 🛠️ قبل تشغيل الاختبارات

### 1. مسح الـ Cache
```bash
php artisan cache:clear
php artisan config:clear
php artisan route:clear
```

### 2. التأكد من إعدادات البيئة
تحقق من ملف `phpunit.xml`:
```xml
<env name="APP_ENV" value="testing"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
```

### 3. تثبيت التبعيات (إذا لزم الأمر)
```bash
composer install
```

---

## 📋 ملفات الاختبار

| الملف | العدد | الوصف |
|-------|-------|-------|
| CategoryTest.php | 65 | اختبارات أساسية |
| CategoryPerformanceSecurityTest.php | 30 | أداء وأمان |
| CategoryFileSecurityTest.php | 25 | أمان ملفات |
| **المجموع** | **120** | - |

---

## 📈 النتائج المتوقعة

عند تشغيل الاختبارات بنجاح، ستحصل على:

```
PASS  Tests\Feature\CategoryTest
✓ unauthenticated user cannot access category index
✓ authorized user can create category successfully
✓ name en is required
... (62 more tests)

PASS  Tests\Feature\CategoryPerformanceSecurityTest
✓ can handle large number of categories
✓ search performs well with large dataset
... (28 more tests)

PASS  Tests\Feature\CategoryFileSecurityTest
✓ executable file disguised as image is rejected
✓ mime type spoofing is detected
... (23 more tests)

Tests:    120 passed (120 assertions)
Duration: XX.XXs
```

---

## ❌ إذا فشلت الاختبارات

### راجع ملف التقرير
```
CATEGORY_TESTS_REPORT.md
```
يحتوي على جميع المشاكل المحتملة والحلول.

### تشخيص المشكلة
```bash
# تشغيل اختبار واحد بتفاصيل
php artisan test --filter=test_name --verbose

# عرض الأخطاء كاملة
php artisan test --filter=Category --stop-on-failure
```

---

## 🎯 الملفات ذات الصلة

- `tests/Feature/CategoryTest.php` - الاختبارات الأساسية
- `tests/Feature/CategoryPerformanceSecurityTest.php` - الأداء والأمان
- `tests/Feature/CategoryFileSecurityTest.php` - أمان الملفات
- `CATEGORY_TESTS_REPORT.md` - تقرير النتائج والحلول
- `app/Http/Requests/CategoryRequest.php` - قواعد التحقق
- `app/Http/Controllers/Dashboard/CategoryController.php` - المتحكم
- `app/Models/Category.php` - النموذج

---

**تاريخ:** 2025-12-21
**الحالة:** ✅ جاهز للتشغيل
