Spaces:
Sleeping
Sleeping
| """Integration test — validates the full agent pipeline.""" | |
| import sys | |
| sys.path.insert(0, '.') | |
| from intent_parser import parse_intent | |
| from health_store import HealthStore | |
| from agent_engine import run_agent | |
| def test_full_pipeline(): | |
| store = HealthStore() | |
| print("=" * 60) | |
| print("THUNA INTEGRATION TEST") | |
| print("=" * 60) | |
| # 1. Add condition | |
| r = run_agent("I have diabetes", store) | |
| assert r.intent_type == "add_condition", f"Expected add_condition, got {r.intent_type}" | |
| assert r.badge == "🏥" | |
| print("✓ Add condition: diabetes") | |
| # 2. Add medication | |
| r = run_agent("metformin 500mg twice daily after food", store) | |
| assert r.intent_type == "add_medication", f"Expected add_medication, got {r.intent_type}" | |
| assert r.badge == "💊 ⏰" | |
| assert len(r.tools_executed) >= 2 | |
| print("✓ Add medication: metformin 500mg") | |
| # 3. Add BP vital | |
| r = run_agent("BP 145/92", store) | |
| assert r.intent_type == "add_vital", f"Expected add_vital, got {r.intent_type}" | |
| assert r.badge == "❤️" | |
| assert r.alert and "ഉയർന്നത" in r.alert # High BP alert in Malayalam | |
| print(f"✓ Add vital (BP 145/92) — Alert: {r.alert[:30]}...") | |
| # 4. Add sugar vital (high - compound risk) | |
| r = run_agent("sugar 250", store) | |
| assert r.intent_type == "add_vital" | |
| assert r.alert # Should trigger alert (diabetes + high sugar) | |
| print(f"✓ Add vital (sugar 250) — Alert: {r.alert[:30]}...") | |
| # 5. Mark taken | |
| r = run_agent("took metformin", store) | |
| assert r.intent_type == "mark_taken" | |
| assert r.badge == "✅" | |
| print("✓ Mark taken: metformin") | |
| # 6. Query medications | |
| r = run_agent("my medicines", store) | |
| assert r.intent_type == "query_medications" | |
| assert "metformin" in r.context_for_llm.lower() or "Metformin" in r.context_for_llm | |
| print("✓ Query medications") | |
| # 7. Query today's doses | |
| r = run_agent("did I take medicine today", store) | |
| assert r.intent_type == "query_today_doses" | |
| print("✓ Query today's doses") | |
| # 8. Set reminder | |
| r = run_agent("remind me at 9pm to take medicine", store) | |
| assert r.intent_type == "set_reminder" | |
| assert r.badge == "⏰" | |
| print("✓ Set reminder") | |
| # 9. Symptom report | |
| r = run_agent("I have headache and fever", store) | |
| assert r.intent_type == "symptom_report" | |
| assert r.badge == "🤒" | |
| print("✓ Symptom report") | |
| # 10. General chat (Malayalam) | |
| r = run_agent("ബോറടിക്കുന്നു", store) | |
| assert r.intent_type == "general_chat" | |
| print("✓ General chat (Malayalam)") | |
| # 11. Drug interaction | |
| r = run_agent("glimepiride 2mg once daily morning", store) | |
| assert r.intent_type == "add_medication" | |
| assert r.alert and "hypoglycemia" in r.alert.lower() or "Monitor" in str(r.alert) | |
| print(f"✓ Drug interaction detected: {r.alert[:50]}...") | |
| # 12. Lab result | |
| r = run_agent("HbA1c 7.2", store) | |
| assert r.intent_type == "add_lab_result" | |
| assert r.badge == "🧪" | |
| print("✓ Lab result: HbA1c 7.2") | |
| # 13. Health report | |
| report = store.generate_health_report("Test Patient") | |
| assert "THUNA HEALTH REPORT" in report | |
| assert "Metformin" in report | |
| assert "Diabetes" in report | |
| print("✓ Health report generated") | |
| # 14. Family status | |
| status = store.generate_family_status("Test Patient") | |
| assert "Test Patient" in status | |
| print("✓ Family status generated") | |
| # 15. Adherence | |
| adherence = store.get_adherence_rate() | |
| assert "rate" in adherence | |
| print(f"✓ Adherence rate: {adherence['rate']}%") | |
| # 16. Stop medication | |
| r = run_agent("stop metformin", store) | |
| assert r.intent_type == "stop_medication" | |
| assert any(t['success'] for t in r.tools_executed) | |
| print("✓ Stop medication") | |
| # Verify it's stopped | |
| active = store.get_active_medications() | |
| assert not any(m.name == "Metformin" for m in active) | |
| print("✓ Metformin confirmed deactivated") | |
| print() | |
| print("=" * 60) | |
| print("ALL 16 TESTS PASSED ✓") | |
| print("=" * 60) | |
| if __name__ == "__main__": | |
| test_full_pipeline() | |