Spiritual_Health_Project / manual_tests /test_clear_provider_summary.py
DocUA's picture
feat: Add comprehensive manual tests for spiritual care message features
1d0741a
#!/usr/bin/env python3
"""
Test script to verify Provider Summary clearing functionality.
"""
import sys
import os
# Add project root to path
project_root = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, project_root)
from src.core.simplified_medical_app import SimplifiedMedicalApp
from src.core.spiritual_state import SpiritualState, SpiritualAssessment
def test_provider_summary_clearing():
"""Test that provider summary is cleared when session is reset."""
print("πŸ§ͺ Testing Provider Summary Clearing Functionality\n")
print("=" * 60)
# Initialize app
print("\n1️⃣ Initializing SimplifiedMedicalApp...")
app = SimplifiedMedicalApp()
print(" βœ… App initialized")
# Verify no summary exists initially
print("\n2️⃣ Checking initial state...")
initial_summary = app.get_last_provider_summary()
if initial_summary is None:
print(" βœ… No provider summary exists initially (expected)")
else:
print(" ❌ UNEXPECTED: Provider summary exists before any RED flag")
return False
# Create a mock RED flag assessment
print("\n3️⃣ Creating mock RED flag assessment...")
red_assessment = SpiritualAssessment(
state=SpiritualState.RED,
indicators=[
"Expressing hopelessness",
"Mentions of self-harm thoughts",
"Withdrawal from spiritual community"
],
confidence=0.92,
reasoning="Patient expresses severe spiritual distress with suicidal ideation"
)
print(" βœ… RED flag assessment created")
# Manually trigger provider summary generation
print("\n4️⃣ Generating provider summary...")
app.spiritual_state.transition_to(SpiritualState.RED, "Test RED flag")
app.spiritual_state.pending_referral = {
"assessment": red_assessment,
"language": "English",
"original_message": "I feel so hopeless, I don't want to live anymore"
}
# Set patient info
app.set_patient_info(name="Test Patient", phone="+1-555-0123")
# Generate referral (this creates the provider summary)
referral_text = app._generate_referral(red_assessment)
print(f" βœ… Provider summary generated ({len(referral_text)} chars)")
# Verify summary exists
print("\n5️⃣ Verifying summary exists...")
summary_after_red = app.get_last_provider_summary()
if summary_after_red is not None:
print(" βœ… Provider summary exists after RED flag")
print(f" πŸ“‹ Patient: {summary_after_red.patient_name}")
print(f" πŸ“‹ Phone: {summary_after_red.patient_phone}")
print(f" πŸ“‹ Indicators: {len(summary_after_red.indicators)}")
print(f" πŸ“‹ Severity: {summary_after_red.severity_level}")
else:
print(" ❌ FAIL: Provider summary not created")
return False
# Reset session (this should clear the summary)
print("\n6️⃣ Resetting session (Clear Chat)...")
app.reset_session()
print(" βœ… Session reset completed")
# Verify summary is cleared
print("\n7️⃣ Verifying summary is cleared...")
summary_after_reset = app.get_last_provider_summary()
if summary_after_reset is None:
print(" βœ… Provider summary successfully cleared after reset")
else:
print(" ❌ FAIL: Provider summary still exists after reset")
return False
print("\n" + "=" * 60)
print("βœ… ALL TESTS PASSED!")
print("=" * 60)
return True
if __name__ == "__main__":
success = test_provider_summary_clearing()
sys.exit(0 if success else 1)