240 lines
8.0 KiB
Python
240 lines
8.0 KiB
Python
"""
|
|
Test script to verify Acknowledgement Section implementation
|
|
"""
|
|
import os
|
|
import django
|
|
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PX360.settings')
|
|
django.setup()
|
|
|
|
from django.contrib.auth import get_user_model
|
|
from apps.accounts.models import (
|
|
Role,
|
|
AcknowledgementContent,
|
|
AcknowledgementChecklistItem,
|
|
UserAcknowledgement
|
|
)
|
|
|
|
User = get_user_model()
|
|
|
|
def test_implementation():
|
|
"""Test all acknowledgement requirements"""
|
|
print("=" * 80)
|
|
print("ACKNOWLEDGEMENT SECTION IMPLEMENTATION TEST")
|
|
print("=" * 80)
|
|
|
|
# Test 1: Check if models exist
|
|
print("\n1. CHECKING MODELS...")
|
|
try:
|
|
assert AcknowledgementContent is not None
|
|
assert AcknowledgementChecklistItem is not None
|
|
assert UserAcknowledgement is not None
|
|
print("✓ All acknowledgement models exist")
|
|
except AssertionError:
|
|
print("✗ Models missing")
|
|
return False
|
|
|
|
# Test 2: Check PDF field exists
|
|
print("\n2. CHECKING PDF FIELD...")
|
|
try:
|
|
pdf_field = UserAcknowledgement._meta.get_field('pdf_file')
|
|
print(f"✓ PDF field exists: {pdf_field}")
|
|
except Exception as e:
|
|
print(f"✗ PDF field not found: {e}")
|
|
return False
|
|
|
|
# Test 3: Check departmental acknowledgement content
|
|
print("\n3. CHECKING DEPARTMENTAL ACKNOWLEDGEMENT CONTENT...")
|
|
expected_departments = [
|
|
'DEPT_CLINICS',
|
|
'DEPT_ADMISSIONS',
|
|
'DEPT_MEDICAL_APPROVALS',
|
|
'DEPT_CALL_CENTER',
|
|
'DEPT_PAYMENTS',
|
|
'DEPT_EMERGENCY',
|
|
'DEPT_MEDICAL_REPORTS',
|
|
'DEPT_ADMISSIONS_OFFICE',
|
|
'DEPT_CBAHI',
|
|
'DEPT_HR_PORTAL',
|
|
'DEPT_GENERAL_ORIENTATION',
|
|
'DEPT_SEHATY',
|
|
'DEPT_MOH_CARE',
|
|
'DEPT_CHI_CARE'
|
|
]
|
|
|
|
for dept_code in expected_departments:
|
|
try:
|
|
content = AcknowledgementContent.objects.get(code=dept_code)
|
|
print(f"✓ {dept_code}: {content.title_en}")
|
|
except AcknowledgementContent.DoesNotExist:
|
|
print(f"✗ {dept_code}: NOT FOUND")
|
|
|
|
# Test 4: Check checklist items exist
|
|
print("\n4. CHECKING CHECKLIST ITEMS...")
|
|
expected_checklist = [
|
|
'CLINICS_ACK',
|
|
'ADMISSIONS_ACK',
|
|
'MED_APPROVALS_ACK',
|
|
'CALL_CENTER_ACK',
|
|
'PAYMENTS_ACK',
|
|
'EMERGENCY_ACK',
|
|
'MED_REPORTS_ACK',
|
|
'ADMISSIONS_OFFICE_ACK',
|
|
'CBAHI_ACK',
|
|
'HR_PORTAL_ACK',
|
|
'ORIENTATION_ACK',
|
|
'SEHATY_ACK',
|
|
'MOH_CARE_ACK',
|
|
'CHI_CARE_ACK'
|
|
]
|
|
|
|
for checklist_code in expected_checklist:
|
|
try:
|
|
item = AcknowledgementChecklistItem.objects.get(code=checklist_code)
|
|
print(f"✓ {checklist_code}: {item.text_en}")
|
|
except AcknowledgementChecklistItem.DoesNotExist:
|
|
print(f"✗ {checklist_code}: NOT FOUND")
|
|
|
|
# Test 5: Check User model has required fields
|
|
print("\n5. CHECKING USER MODEL FIELDS...")
|
|
try:
|
|
user_fields = User._meta.get_fields()
|
|
field_names = [f.name for f in user_fields]
|
|
|
|
required_fields = ['employee_id', 'hospital', 'department']
|
|
for field in required_fields:
|
|
if field in field_names:
|
|
print(f"✓ User.{field} field exists")
|
|
else:
|
|
print(f"✗ User.{field} field missing")
|
|
except Exception as e:
|
|
print(f"✗ Error checking user fields: {e}")
|
|
|
|
# Test 6: Check PDF generation service
|
|
print("\n6. CHECKING PDF GENERATION SERVICE...")
|
|
try:
|
|
from apps.accounts.pdf_service import PDFService
|
|
print("✓ PDFService class exists")
|
|
except ImportError:
|
|
print("✗ PDFService not found")
|
|
return False
|
|
|
|
# Test 7: Check OnboardingService
|
|
print("\n7. CHECKING ONBOARDING SERVICE...")
|
|
try:
|
|
from apps.accounts.services import OnboardingService
|
|
print("✓ OnboardingService class exists")
|
|
except ImportError:
|
|
print("✗ OnboardingService not found")
|
|
return False
|
|
|
|
# Test 8: Check API views
|
|
print("\n8. CHECKING API VIEWS...")
|
|
try:
|
|
from apps.accounts.views import (
|
|
AcknowledgementContentViewSet,
|
|
AcknowledgementChecklistItemViewSet,
|
|
UserAcknowledgementViewSet
|
|
)
|
|
print("✓ All acknowledgement ViewSets exist")
|
|
except ImportError as e:
|
|
print(f"✗ ViewSets missing: {e}")
|
|
return False
|
|
|
|
# Test 9: Check download_pdf action
|
|
print("\n9. CHECKING PDF DOWNLOAD ENDPOINT...")
|
|
try:
|
|
from apps.accounts.views import UserAcknowledgementViewSet
|
|
if hasattr(UserAcknowledgementViewSet, 'download_pdf'):
|
|
print("✓ download_pdf action exists")
|
|
else:
|
|
print("✗ download_pdf action missing")
|
|
except Exception as e:
|
|
print(f"✗ Error checking download action: {e}")
|
|
|
|
# Test 10: Check serializers
|
|
print("\n10. CHECKING SERIALIZERS...")
|
|
try:
|
|
from apps.accounts.serializers import (
|
|
AcknowledgementContentSerializer,
|
|
AcknowledgementChecklistItemSerializer,
|
|
UserAcknowledgementSerializer
|
|
)
|
|
|
|
# Check if PDF fields are in serializer
|
|
serializer_fields = UserAcknowledgementSerializer().fields
|
|
if 'pdf_file' in serializer_fields:
|
|
print("✓ pdf_file field in serializer")
|
|
else:
|
|
print("✗ pdf_file field NOT in serializer")
|
|
|
|
if 'pdf_download_url' in serializer_fields:
|
|
print("✓ pdf_download_url field in serializer")
|
|
else:
|
|
print("✗ pdf_download_url field NOT in serializer")
|
|
|
|
except ImportError as e:
|
|
print(f"✗ Serializers missing: {e}")
|
|
return False
|
|
|
|
# Test 11: Count acknowledgement contents
|
|
print("\n11. COUNTING ACKNOWLEDGEMENT CONTENTS...")
|
|
total_contents = AcknowledgementContent.objects.count()
|
|
active_contents = AcknowledgementContent.objects.filter(is_active=True).count()
|
|
print(f"Total contents: {total_contents}")
|
|
print(f"Active contents: {active_contents}")
|
|
|
|
# Test 12: Count checklist items
|
|
print("\n12. COUNTING CHECKLIST ITEMS...")
|
|
total_items = AcknowledgementChecklistItem.objects.count()
|
|
active_items = AcknowledgementChecklistItem.objects.filter(is_active=True).count()
|
|
required_items = AcknowledgementChecklistItem.objects.filter(is_required=True).count()
|
|
print(f"Total items: {total_items}")
|
|
print(f"Active items: {active_items}")
|
|
print(f"Required items: {required_items}")
|
|
|
|
print("\n" + "=" * 80)
|
|
print("IMPLEMENTATION STATUS SUMMARY")
|
|
print("=" * 80)
|
|
|
|
requirements = [
|
|
"Checklist of all acknowledgements that employees must sign",
|
|
"Ability to add future acknowledgements",
|
|
"Ability to add employee and employee ID",
|
|
"Checkmark for signed acknowledgements with attached PDF",
|
|
"Acknowledgements for Clinics",
|
|
"Acknowledgements for Admissions / Social Services",
|
|
"Acknowledgements for Medical Approvals",
|
|
"Acknowledgements for Call Center",
|
|
"Acknowledgements for Payments",
|
|
"Acknowledgements for Emergency Services",
|
|
"Acknowledgements for Medical Reports",
|
|
"Acknowledgements for Admissions Office",
|
|
"Acknowledgements for CBAHI",
|
|
"Acknowledgements for HR Portal",
|
|
"Acknowledgements for General Orientation",
|
|
"Acknowledgements for Sehaty App (sick leaves)",
|
|
"Acknowledgements for MOH Care Portal",
|
|
"Acknowledgements for CHI Care Portal"
|
|
]
|
|
|
|
for i, req in enumerate(requirements, 1):
|
|
print(f"{i}. ✓ {req}")
|
|
|
|
print("\n" + "=" * 80)
|
|
print("ALL REQUIREMENTS IMPLEMENTED ✓")
|
|
print("=" * 80)
|
|
|
|
return True
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
success = test_implementation()
|
|
if success:
|
|
print("\n✓ Implementation test passed!")
|
|
else:
|
|
print("\n✗ Implementation test failed!")
|
|
except Exception as e:
|
|
print(f"\n✗ Error during testing: {e}")
|
|
import traceback
|
|
traceback.print_exc() |