"""GraphitiClient 清空图谱所有数据测试."""
import pytest
from unittest.mock import Mock, MagicMock
from src.graphiti_client import GraphitiClient
from src.config_manager import ConfigManager
class TestGraphitiClientClearGraphAll:
"""GraphitiClient 清空图谱所有数据测试类."""
@pytest.fixture
def config_manager(self, temp_config_dir):
"""创建配置管理器."""
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
@pytest.fixture
def mock_client(self, config_manager):
"""创建 Mock 客户端."""
client = GraphitiClient(config_manager)
# Mock driver 和 session
mock_driver = Mock()
mock_session = Mock()
mock_driver.session.return_value.__enter__ = Mock(return_value=mock_session)
mock_driver.session.return_value.__exit__ = Mock(return_value=None)
client.driver = mock_driver
client._connected = True
return client, mock_session
def test_clear_graph_all_data(self, mock_client):
"""测试清空所有数据."""
client, mock_session = mock_client
# 设置 group_id 为 None(这样会清空所有数据)
client.config_manager.set_group_id("")
client.config_manager._config.group_id = None
# Mock 查询结果
mock_result = Mock()
mock_record = Mock()
mock_record.__getitem__ = Mock(side_effect=lambda key: {"deleted_count": 10} if key == "deleted_count" else None)
mock_result.single.return_value = mock_record
mock_result.peek.return_value = mock_record
mock_session.run.return_value = mock_result
result = client.clear_graph(group_id=None)
assert result is not None
assert result['success'] is True
assert "已清空" in result['message']
assert "10" in result['message']