"""GraphitiClient 断开连接测试."""
import pytest
from unittest.mock import Mock, patch
from src.graphiti_client import GraphitiClient
from src.config_manager import ConfigManager
class TestGraphitiClientDisconnect:
"""GraphitiClient 断开连接测试类."""
@pytest.fixture
def config_manager(self, temp_config_dir):
"""创建配置管理器."""
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
def test_disconnect_with_graphiti(self, config_manager):
"""测试断开连接(有 Graphiti 实例)."""
client = GraphitiClient(config_manager)
# Mock Graphiti 实例
mock_graphiti = Mock()
mock_graphiti.close = Mock()
client.graphiti = mock_graphiti
# Mock driver
mock_driver = Mock()
mock_driver.close = Mock()
client.driver = mock_driver
client._connected = True
# 断开连接
client.disconnect()
# 验证 Graphiti 和 driver 都被关闭
assert client.graphiti is None
assert client.driver is None
assert client._connected is False
def test_disconnect_with_graphiti_exception(self, config_manager):
"""测试断开连接(Graphiti 关闭时发生异常)."""
client = GraphitiClient(config_manager)
# Mock Graphiti 实例(关闭时抛出异常)
mock_graphiti = Mock()
mock_graphiti.close = Mock(side_effect=Exception("Close error"))
client.graphiti = mock_graphiti
# Mock driver
mock_driver = Mock()
mock_driver.close = Mock()
client.driver = mock_driver
client._connected = True
# 断开连接(应该能处理异常)
client.disconnect()
# 验证即使 Graphiti 关闭失败,driver 仍然被关闭
assert client.graphiti is None
assert client.driver is None
assert client._connected is False
def test_disconnect_without_graphiti(self, config_manager):
"""测试断开连接(无 Graphiti 实例)."""
client = GraphitiClient(config_manager)
# Mock driver
mock_driver = Mock()
mock_driver.close = Mock()
client.driver = mock_driver
client._connected = True
# 断开连接
client.disconnect()
# 验证 driver 被关闭
assert client.driver is None
assert client._connected is False
def test_disconnect_without_driver(self, config_manager):
"""测试断开连接(无 driver)."""
client = GraphitiClient(config_manager)
# 断开连接(应该不会出错)
client.disconnect()
# 验证状态
assert client.driver is None
assert client._connected is False