mirror of
https://github.com/aimingmed/aimingmed-ai.git
synced 2026-01-19 21:37:31 +08:00
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
import pytest
|
|
from fastapi.testclient import TestClient
|
|
from unittest.mock import patch, MagicMock
|
|
from fastapi import WebSocket
|
|
import sys
|
|
import types
|
|
|
|
# Patch langchain and other heavy dependencies for import
|
|
sys.modules['langchain_deepseek'] = MagicMock()
|
|
sys.modules['langchain_huggingface'] = MagicMock()
|
|
sys.modules['langchain_community.vectorstores.chroma'] = MagicMock()
|
|
sys.modules['langchain_community.tools.tavily_search'] = MagicMock()
|
|
sys.modules['langchain_core.prompts'] = MagicMock()
|
|
sys.modules['langchain_core.output_parsers'] = MagicMock()
|
|
sys.modules['langchain.prompts'] = MagicMock()
|
|
sys.modules['langchain.schema'] = MagicMock()
|
|
sys.modules['langgraph.graph'] = MagicMock()
|
|
|
|
from api import chatbot
|
|
|
|
@pytest.fixture
|
|
def client():
|
|
from fastapi import FastAPI
|
|
app = FastAPI()
|
|
app.include_router(chatbot.router)
|
|
return TestClient(app)
|
|
|
|
def test_router_exists():
|
|
assert hasattr(chatbot, 'router')
|
|
|
|
def test_env_vars_loaded(monkeypatch):
|
|
monkeypatch.setenv('DEEPSEEK_API_KEY', 'dummy')
|
|
monkeypatch.setenv('TAVILY_API_KEY', 'dummy')
|
|
# Re-import to trigger env loading
|
|
import importlib
|
|
importlib.reload(chatbot)
|
|
assert True
|
|
|
|
def test_websocket_endpoint_accepts(monkeypatch):
|
|
# Patch ConnectionManager
|
|
mock_manager = MagicMock()
|
|
monkeypatch.setattr(chatbot, 'manager', mock_manager)
|
|
ws = MagicMock(spec=WebSocket)
|
|
ws.receive_text = MagicMock(side_effect=[pytest.raises(StopIteration)])
|
|
ws.accept = MagicMock()
|
|
# Should not raise
|
|
try:
|
|
coro = chatbot.websocket_endpoint(ws)
|
|
assert hasattr(coro, '__await__')
|
|
except Exception as e:
|
|
pytest.fail(f"websocket_endpoint raised: {e}")
|