mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-27 09:06:59 -05:00
Implement Test Data Generator
This commit is contained in:
246
docs/TEST_DATA_GENERATOR.md
Normal file
246
docs/TEST_DATA_GENERATOR.md
Normal file
@@ -0,0 +1,246 @@
|
||||
# Test Data Generator
|
||||
|
||||
## Overview
|
||||
|
||||
The Test Data Generator is a comprehensive testing utility that creates realistic submissions to test the moderation queue, versioning, and audit systems. It's accessible from **Admin Settings > Testing** tab.
|
||||
|
||||
## Features
|
||||
|
||||
- **Multiple Presets**: Small, Medium, Large, and Stress test configurations
|
||||
- **Entity Type Selection**: Choose which entities to generate (parks, rides, companies, etc.)
|
||||
- **Advanced Options**: Dependencies, conflicts, version chains, escalations
|
||||
- **Test Data Marking**: All generated data is marked with `is_test_data: true`
|
||||
- **Easy Cleanup**: Clear all test data with one click
|
||||
|
||||
## Usage
|
||||
|
||||
### Accessing the Generator
|
||||
|
||||
1. Log in as a moderator or admin
|
||||
2. Navigate to **Admin Settings**
|
||||
3. Click the **Testing** tab
|
||||
4. Configure your test data generation
|
||||
|
||||
### Presets
|
||||
|
||||
#### Small (~20 submissions)
|
||||
- **Use Case**: Quick sanity checks, basic functionality testing
|
||||
- **Contents**: 5 parks, 10 rides, 3 companies, 2 ride models
|
||||
- **Time**: ~2-5 seconds
|
||||
|
||||
#### Medium (~100 submissions)
|
||||
- **Use Case**: Standard testing, queue management validation
|
||||
- **Contents**: 20 parks, 50 rides, 20 companies, 10 ride models
|
||||
- **Time**: ~10-20 seconds
|
||||
|
||||
#### Large (~500 submissions)
|
||||
- **Use Case**: Performance testing, pagination verification
|
||||
- **Contents**: 100 parks, 250 rides, 100 companies, 50 ride models
|
||||
- **Time**: ~45-90 seconds
|
||||
|
||||
#### Stress (~2000 submissions)
|
||||
- **Use Case**: Load testing, database performance
|
||||
- **Contents**: 400 parks, 1000 rides, 400 companies, 200 ride models
|
||||
- **Time**: ~3-5 minutes
|
||||
|
||||
### Entity Types
|
||||
|
||||
Select which entity types to generate:
|
||||
|
||||
- **Parks**: Theme parks, amusement parks, water parks
|
||||
- **Rides**: Roller coasters, flat rides, water rides, dark rides
|
||||
- **Manufacturers**: Companies that build rides
|
||||
- **Operators**: Companies that operate parks
|
||||
- **Property Owners**: Companies that own park properties
|
||||
- **Designers**: Individuals/companies that design rides
|
||||
- **Ride Models**: Specific ride model types from manufacturers
|
||||
|
||||
### Advanced Options
|
||||
|
||||
#### Include Dependencies
|
||||
- Creates parent-child relationships (e.g., rides linked to parks)
|
||||
- Tests dependency resolution in moderation queue
|
||||
- Essential for realistic testing scenarios
|
||||
|
||||
#### Include Conflicts
|
||||
- Generates submissions with missing dependencies
|
||||
- Creates duplicate slug scenarios
|
||||
- Tests error handling and conflict resolution
|
||||
|
||||
#### Include Version Chains
|
||||
- Creates multiple edits on the same entity
|
||||
- Tests versioning system and rollback functionality
|
||||
- Validates field-level change tracking
|
||||
|
||||
#### Include Escalated Items
|
||||
- Marks some submissions as high priority
|
||||
- Tests escalation workflow
|
||||
- Priority queue sorting validation
|
||||
|
||||
#### Include Expired Locks
|
||||
- Creates submissions with expired moderator locks
|
||||
- Tests auto-release mechanism
|
||||
- Queue cleanup validation
|
||||
|
||||
## Test Data Structure
|
||||
|
||||
All test submissions include:
|
||||
|
||||
```json
|
||||
{
|
||||
"content": {
|
||||
"action": "create",
|
||||
"metadata": {
|
||||
"is_test_data": true,
|
||||
"generated_at": "2024-01-15T10:30:00Z",
|
||||
"generator_version": "1.0.0",
|
||||
"preset": "medium"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This metadata allows:
|
||||
- Easy identification in database queries
|
||||
- Selective cleanup without affecting real data
|
||||
- Version tracking of test data generator
|
||||
|
||||
## Cleanup
|
||||
|
||||
### Clear All Test Data
|
||||
|
||||
1. Click **Clear All Test Data** button
|
||||
2. Confirm the action in the dialog
|
||||
3. All submissions with `is_test_data: true` will be deleted
|
||||
4. Process includes:
|
||||
- Deletion of `content_submissions` records
|
||||
- Cascade deletion of related `submission_items`
|
||||
- Cascade deletion of type-specific tables
|
||||
- Removal of photo submissions
|
||||
- Cleanup of version history
|
||||
|
||||
**Note**: This only removes test data. Real user submissions are never affected.
|
||||
|
||||
## Testing Scenarios
|
||||
|
||||
### Basic CRUD Testing
|
||||
1. Generate Small preset with all entity types
|
||||
2. Navigate to Moderation Queue
|
||||
3. Claim and approve a park submission
|
||||
4. Verify park appears in database
|
||||
5. Clear test data when done
|
||||
|
||||
### Dependency Resolution
|
||||
1. Generate Medium preset with dependencies enabled
|
||||
2. Find a ride submission that depends on a new park
|
||||
3. Approve the park first
|
||||
4. Verify ride can now be approved
|
||||
5. Check that park ID is correctly linked
|
||||
|
||||
### Queue Management
|
||||
1. Generate Large preset with escalated items
|
||||
2. Verify escalated items appear at top of queue
|
||||
3. Test claiming and lock expiration
|
||||
4. Verify priority sorting works correctly
|
||||
|
||||
### Performance Testing
|
||||
1. Generate Stress preset
|
||||
2. Navigate to moderation queue
|
||||
3. Test pagination performance
|
||||
4. Test filtering and search performance
|
||||
5. Monitor database query times
|
||||
|
||||
### Version Chain Testing
|
||||
1. Generate Medium preset with version chains
|
||||
2. Find an entity with multiple edits
|
||||
3. View version history
|
||||
4. Test rollback functionality
|
||||
5. Verify field-level changes tracked
|
||||
|
||||
## Best Practices
|
||||
|
||||
### During Development
|
||||
- Use **Small** preset for quick iterations
|
||||
- Enable only the entity types you're testing
|
||||
- Clear test data frequently to avoid clutter
|
||||
|
||||
### Before Deployment
|
||||
- Run **Medium** preset with all options
|
||||
- Verify all workflows complete successfully
|
||||
- Test with **Large** preset for performance baseline
|
||||
|
||||
### Performance Testing
|
||||
- Use **Stress** preset on staging environment
|
||||
- Monitor database performance metrics
|
||||
- Test concurrent moderator scenarios
|
||||
|
||||
### Data Management
|
||||
- Clear test data after each testing session
|
||||
- Never deploy with test data in production
|
||||
- Document any test data used in demos
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Generation Fails
|
||||
- Check browser console for errors
|
||||
- Verify moderator permissions
|
||||
- Check edge function logs in Supabase dashboard
|
||||
- Ensure database connection is stable
|
||||
|
||||
### Slow Generation
|
||||
- Large/Stress presets take time (expected)
|
||||
- Check database performance
|
||||
- Verify edge function timeout settings
|
||||
- Consider generating in smaller batches
|
||||
|
||||
### Cannot Clear Test Data
|
||||
- Verify test data exists (check stats display)
|
||||
- Check RLS policies on content_submissions
|
||||
- Ensure cascade delete is configured
|
||||
- Check edge function permissions
|
||||
|
||||
### Test Data Appears in Production
|
||||
- **Never run generator in production**
|
||||
- Use separate testing/staging environment
|
||||
- If accidentally run, use Clear All Test Data immediately
|
||||
- Verify with database query that test data is removed
|
||||
|
||||
## Technical Details
|
||||
|
||||
### Implementation Files
|
||||
- **Service**: `src/lib/testDataGenerator.ts`
|
||||
- **UI Component**: `src/components/admin/TestDataGenerator.tsx`
|
||||
- **Seed Function**: `supabase/functions/seed-test-data/index.ts`
|
||||
- **Integration**: `src/pages/AdminSettings.tsx`
|
||||
|
||||
### Database Tables Used
|
||||
- `content_submissions` - Main submission records
|
||||
- `submission_items` - Individual submission items
|
||||
- `park_submissions` - Park-specific data
|
||||
- `ride_submissions` - Ride-specific data
|
||||
- `company_submissions` - Company-specific data
|
||||
- `ride_model_submissions` - Ride model-specific data
|
||||
|
||||
### Security
|
||||
- Requires moderator role
|
||||
- Uses service role key for bulk operations
|
||||
- Rate limited to prevent abuse
|
||||
- All operations logged in audit trail
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
Planned features:
|
||||
- Photo submission generation
|
||||
- Report/moderation flag generation
|
||||
- Custom seed configuration
|
||||
- Export/import test scenarios
|
||||
- Automated test suite integration
|
||||
- Performance benchmarking tools
|
||||
|
||||
## Support
|
||||
|
||||
For issues or questions:
|
||||
1. Check edge function logs in Supabase dashboard
|
||||
2. Review browser console for client errors
|
||||
3. Verify database schema matches expectations
|
||||
4. Check RLS policies are correctly configured
|
||||
Reference in New Issue
Block a user