"""Tests for followup_research models.""" from local_deep_research.followup_research.models import FollowUpRequest class TestFollowUpRequest: """Tests for FollowUpRequest dataclass.""" def test_create_with_required_fields(self): """Create request with only required fields.""" request = FollowUpRequest( parent_research_id="parent-123", question="What is the follow-up question?", ) assert request.parent_research_id == "parent-123" assert request.question == "What is the follow-up question?" assert request.strategy == "source-based" # Default assert request.max_iterations == 1 # Default assert request.questions_per_iteration == 3 # Default def test_create_with_all_fields(self): """Create request with all fields specified.""" request = FollowUpRequest( parent_research_id="parent-456", question="Custom question", strategy="iterative", max_iterations=5, questions_per_iteration=10, ) assert request.parent_research_id == "parent-456" assert request.question == "Custom question" assert request.strategy == "iterative" assert request.max_iterations == 5 assert request.questions_per_iteration == 10 def test_to_dict(self): """to_dict returns dictionary with all fields.""" request = FollowUpRequest( parent_research_id="parent-789", question="Test question", strategy="enhanced", max_iterations=2, questions_per_iteration=5, ) result = request.to_dict() assert isinstance(result, dict) assert result["parent_research_id"] == "parent-789" assert result["question"] == "Test question" assert result["strategy"] == "enhanced" assert result["max_iterations"] == 2 assert result["questions_per_iteration"] == 5 def test_to_dict_with_defaults(self): """to_dict includes default values.""" request = FollowUpRequest( parent_research_id="parent-abc", question="Question with defaults", ) result = request.to_dict() assert result["strategy"] == "source-based" assert result["max_iterations"] == 1 assert result["questions_per_iteration"] == 3 def test_empty_question(self): """Create request with empty question (edge case).""" request = FollowUpRequest( parent_research_id="parent-123", question="", ) assert request.question == ""