# Working Test Suite for SIMEDKOM

This is a clean, working test suite that has been verified to run without errors.

## ✅ Working Tests

### Unit Tests - Models (`tests/Unit/Models/`)
- `UserTest.php` - User model basic tests
- `ThemeTest.php` - Theme model with enum casting and relationships
- `ClassificationTest.php` - Classification model with relationships
- `SubClassificationTest.php` - Sub-classification model
- `LocationTest.php` - Location model with relationships
- `SubLocationTest.php` - Sub-location model
- `DepartmentTest.php` - Department model
- `CompanyTest.php` - Company model with relationships
- `PartnerMediaTest.php` - Partner media with enum casting
- `JournalistTest.php` - Journalist model
- `MediaMonitoringTest.php` - Media monitoring with relationships
- `IssueManagementTest.php` - Issue management with enum casting
- `ContentRecapTest.php` - Content recap model
- `MediaMonitoringThemeTest.php` - Pivot table model

### Unit Tests - Enums (`tests/Unit/Enums/`)
- `MediaTypeTest.php` - Media type enum with labels and options
- `IsActiveTest.php` - Active status enum with colors
- `IssueSentimentTest.php` - Issue sentiment enum with colors
- `ContentTypeTest.php` - Content type enum
- `MediaClassificationTest.php` - Media classification enum
- `ChannelTest.php` - Channel enum
- `SocialMediaTest.php` - Social media enum

### Feature Tests (`tests/Feature/`)
- `BasicFactoryTest.php` - Factory creation tests
- `ModelFactoryTest.php` - Simple model factory verification

## 🏭 Working Factories (`database/factories/`)

All factories are properly configured based on actual migration structures:

### Master Domain
- `ThemeFactory.php` - Creates themes with proper enum values
- `ClassificationFactory.php` - Creates classifications with descriptions
- `SubClassificationFactory.php` - Creates sub-classifications with relationships
- `LocationFactory.php` - Creates locations (cities/regions)
- `SubLocationFactory.php` - Creates sub-locations with relationships
- `DepartmentFactory.php` - Creates departments with aliases

### Manage Domain
- `CompanyFactory.php` - Creates companies with all required documents
- `PartnerMediaFactory.php` - Creates media partners with proper types
- `JournalistFactory.php` - Creates journalists with credentials

### Monitoring Domain
- `MediaMonitoringFactory.php` - Creates media monitoring entries
- `ContentRecapFactory.php` - Creates content recaps with social media data
- `IssueManagementFactory.php` - Creates issues with sentiment analysis
- `MediaMonitoringThemeFactory.php` - Creates pivot relationships

## 🚀 Running Tests

```bash
# Run all working tests
php artisan test

# Run specific test suites
php artisan test tests/Unit/Models
php artisan test tests/Unit/Enums
php artisan test tests/Feature

# Run specific test files
php artisan test tests/Feature/ModelFactoryTest.php
php artisan test tests/Unit/Models/ThemeTest.php
```

## ✨ Key Features

### Proper Enum Integration
- All enums use correct integer/string values from actual migrations
- Proper enum casting in models
- Label and color methods working correctly

### Realistic Test Data
- Indonesian government department names
- Indonesian media company names (Kompas, Detik, Tribun, etc.)
- Proper document number formats
- Social media platforms and channels

### Model Relationships
- All relationships properly tested
- Foreign key constraints respected
- Pivot table relationships working

### Factory States
- `active()` / `inactive()` states for models with is_active
- `validated()` / `rejected()` / `pending()` for Company
- `online()` / `print()` / `television()` / `radio()` for PartnerMedia
- `positive()` / `negative()` / `neutral()` / `crisis()` for IssueManagement

## 📋 Test Coverage

- ✅ All core models tested
- ✅ All enums tested
- ✅ All factories working
- ✅ Model relationships verified
- ✅ Enum casting verified
- ✅ Database constraints respected

This test suite provides a solid foundation for your SIMEDKOM project and can be extended as needed.
