4.7 KiB
4.7 KiB
SLA Testing Quick Start
Get started with realistic SLA testing in 5 minutes!
Quick Setup
1. Verify Your Environment
# Check Django is configured
cat .env | grep DJANGO_SETTINGS_MODULE
# Should show: DJANGO_SETTINGS_MODULE=config.settings.dev
2. Run Scenario 1 (Happy Path - ~7 seconds)
python test_scenario_1_successful_explanation.py
What it tests: Staff submits explanation before deadline ✅
Expected output:
TEST SUMMARY
Total Steps: 7
Successful: 7
Failed: 0
Elapsed Time: 7.2s
✓✓✓ ALL TESTS PASSED ✓✓✓
3. Run Scenario 2 (Escalation - ~37 seconds)
python test_scenario_2_escalation_with_reminders.py
What it tests:
- Staff doesn't respond ⚠️
- First reminder sent ⚠️
- Second reminder sent ⚠️
- Escalates to manager 📈
- Escalates to department head 📈
Expected output:
TEST SUMMARY
Total Steps: 12
Successful: 12
Failed: 0
Elapsed Time: 37.5s
✓✓✓ ALL TESTS PASSED ✓✓✓
What Just Happened?
Time Compression Magic
The tests use 1 second = 1 hour time compression:
- Real SLA: 48 hours → Test time: 48 seconds
- Real SLA: 12 hours → Test time: 12 seconds
This means you can test a full 2-day workflow in under 1 minute!
Real System Execution
These are NOT mocks - they execute real code:
✅ Real database operations
✅ Real Celery tasks
✅ Real email sending
✅ Real SLA calculations
✅ Real escalation logic
What Gets Created
Scenario 1 Creates:
- 1 Hospital (Al Hammadi Hospital)
- 1 Department (Emergency Department)
- 1 Staff member (Omar Al-Harbi - Nurse)
- 1 Complaint (Poor response time)
- 1 Explanation request (submitted)
- 1 ExplanationSLAConfig (10-hour deadline)
- 1 ComplaintSLAConfig (72-hour SLA)
Scenario 2 Creates:
- 1 Hospital (Al Hammadi Hospital)
- 1 Department (Emergency Department)
- 3 Staff members (Staff → Manager → Department Head)
- 1 Complaint (High severity, high priority)
- 1 Explanation request (overdue, escalated)
- 1 ExplanationSLAConfig (12-hour deadline with reminders)
- 1 SecondReminderConfig (3 hours before deadline)
- 1 ComplaintSLAConfig (48-hour SLA)
Verify Results in Django Admin
# Start Django server
python manage.py runserver
# Visit: http://localhost:8000/admin
# Login with your admin credentials
# Check:
# - Complaints → All Complaints
# - Complaints → Explanations
# - Organizations → Staff
# - Complaints → SLA Configurations
Clean Up Test Data
python manage.py shell
# Delete test complaints
from apps.complaints.models import Complaint, ComplaintExplanation
Complaint.objects.filter(contact_name="Test Patient").delete()
Complaint.objects.filter(contact_name="Concerned Family Member").delete()
# Delete test staff (be careful!)
from apps.organizations.models import Staff
Staff.objects.filter(email__contains=".test").delete()
# Delete test SLA configs
from apps.complaints.models import ExplanationSLAConfig, ComplaintSLAConfig, SecondReminderConfig
ExplanationSLAConfig.objects.all().delete()
ComplaintSLAConfig.objects.all().delete()
SecondReminderConfig.objects.all().delete()
Common Issues
Issue: "Database error"
Solution:
python manage.py migrate
Issue: "Email failed to send"
Solution: Add to .env:
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
Issue: "Module not found"
Solution: Make sure you're in the project root:
cd /home/ismail/projects/HH
Customize Your Test
Change Time Compression
Edit the test script:
# Make it faster (1s = 2h)
test = Scenario1SuccessfulExplanation(time_compression_ratio=2)
# Make it slower (1s = 30min)
test = Scenario1SuccessfulExplanation(time_compression_ratio=0.5)
Change SLA Deadline
Edit the SLA config in the test:
self.create_explanation_sla_config(
hospital=hospital,
response_hours=24, # Change from 10 to 24 hours
reminder_hours_before=12, # Change from 5 to 12 hours
auto_escalate_enabled=True,
escalation_hours_overdue=0,
max_escalation_levels=3
)
Next Steps
- ✅ Run both scenarios successfully
- ✅ Review results in Django admin
- ✅ Check the email output (console or real email)
- ✅ Customize SLA settings to match your needs
- ✅ Read the full guide:
docs/REAL_TIME_SLA_TESTING_GUIDE.md
Need Help?
- Full documentation:
docs/REAL_TIME_SLA_TESTING_GUIDE.md - SLA system overview:
docs/SLA_SYSTEM_OVERVIEW.md - Celery tasks:
apps/complaints/tasks.py - Models:
apps/complaints/models.py
Ready to test? Run Scenario 1 now:
python test_scenario_1_successful_explanation.py