Spaces:
Sleeping
Sleeping
| import pytest | |
| from src.core.ai_client import AIClientManager | |
| from src.config.ai_providers_config import get_agent_config | |
| def test_default_spiritual_distress_analyzer_is_gemini(): | |
| config = get_agent_config("SpiritualDistressAnalyzer") | |
| assert config["provider"].value == "gemini" | |
| assert config["model"].value.startswith("gemini") | |
| def test_model_override_creates_non_cached_client_and_does_not_leak(): | |
| mgr = AIClientManager() | |
| # Baseline (cached) client should be created once | |
| base = mgr.get_client("SpiritualDistressAnalyzer") | |
| # Override should return a fresh client each time (non-cached) | |
| override_1 = mgr.get_client("SpiritualDistressAnalyzer", model_override="claude-sonnet-4-5-20250929") | |
| override_2 = mgr.get_client("SpiritualDistressAnalyzer", model_override="claude-sonnet-4-5-20250929") | |
| assert override_1 is not override_2 | |
| # And it should not replace the cached base client | |
| base_again = mgr.get_client("SpiritualDistressAnalyzer") | |
| assert base_again is base | |
| def test_manager_attached_model_overrides_apply_to_spiritual_and_medical_calls_without_args(monkeypatch): | |
| mgr = AIClientManager() | |
| # Attach session-level overrides as done by SimplifiedMedicalApp | |
| mgr.model_overrides = { | |
| "SpiritualDistressAnalyzer": "claude-sonnet-4-5-20250929", | |
| "SoftMedicalTriage": "gemini-2.5-flash", | |
| } | |
| captured = [] | |
| def fake_generate_response(*, system_prompt, user_prompt, temperature=None, call_type="", agent_name="DefaultAgent", medical_context=None, model_override=None): | |
| captured.append({ | |
| "agent_name": agent_name, | |
| "call_type": call_type, | |
| "model_override": model_override, | |
| }) | |
| return "ok" | |
| monkeypatch.setattr(mgr, "generate_response", fake_generate_response) | |
| mgr.call_spiritual_api("sys", "user") | |
| mgr.call_medical_api("sys", "user") | |
| assert captured[0]["agent_name"] == "SpiritualDistressAnalyzer" | |
| assert captured[0]["model_override"] == "claude-sonnet-4-5-20250929" | |
| assert captured[1]["agent_name"] == "SoftMedicalTriage" | |
| assert captured[1]["model_override"] == "gemini-2.5-flash" | |
| def test_two_managers_do_not_share_model_overrides(): | |
| mgr_a = AIClientManager() | |
| mgr_b = AIClientManager() | |
| mgr_a.model_overrides = {"SpiritualDistressAnalyzer": "claude-sonnet-4-5-20250929"} | |
| mgr_b.model_overrides = {"SpiritualDistressAnalyzer": "gemini-2.5-flash"} | |
| assert mgr_a.model_overrides["SpiritualDistressAnalyzer"] != mgr_b.model_overrides["SpiritualDistressAnalyzer"] | |