test_conversation_missing_files.pyโข2.43 kB
"""
Test conversation memory handling of missing files.
Following existing test patterns to ensure conversation memory gracefully
handles missing files without crashing.
"""
from unittest.mock import Mock
from utils.conversation_memory import (
ConversationTurn,
ThreadContext,
build_conversation_history,
)
class TestConversationMissingFiles:
"""Test handling of missing files during conversation memory reconstruction."""
def test_build_conversation_history_handles_missing_files(self):
"""Test that conversation history building handles missing files gracefully."""
# Create conversation context with missing file reference (following existing test patterns)
context = ThreadContext(
thread_id="test-thread",
created_at="2024-01-01T00:00:00Z",
last_updated_at="2024-01-01T00:05:00Z",
tool_name="analyze",
turns=[
ConversationTurn(
role="user",
content="Please analyze this file",
timestamp="2024-01-01T00:01:00Z",
files=["/nonexistent/missing_file.py"], # File that doesn't exist
tool_name="analyze",
),
ConversationTurn(
role="assistant",
content="Here's my analysis...",
timestamp="2024-01-01T00:02:00Z",
tool_name="analyze",
),
],
initial_context={"path": "/nonexistent/missing_file.py"},
)
# Mock model context (following existing test patterns)
mock_model_context = Mock()
mock_model_context.calculate_token_allocation.return_value = Mock(file_tokens=50000, history_tokens=50000)
mock_model_context.estimate_tokens.return_value = 100
mock_model_context.model_name = "test-model"
# Should not crash, should handle missing file gracefully
history, tokens = build_conversation_history(context, mock_model_context)
# Should return valid history despite missing file
assert isinstance(history, str)
assert isinstance(tokens, int)
assert len(history) > 0
# Should contain conversation content
assert "CONVERSATION HISTORY" in history
assert "Please analyze this file" in history
assert "Here's my analysis" in history