from unittest.mock import Mock from pr_review.base import BasePRAnalyzer class TestBasePRAnalyzer: def test_analyze_pr_workflow(self): """Test the complete PR analysis workflow.""" # Create mocks mock_github_client = Mock() mock_llm_client = Mock() mock_prompt_builder = Mock() mock_pr_waiter = Mock() # Setup mock returns pr_data = {'pr_title': 'Test', 'diff': [], 'tf_plans': []} mock_pr_waiter.wait_for_analysis_ready.return_value = pr_data mock_prompt_builder.build_prompt.return_value = 'test prompt' mock_llm_client.analyze_pr.return_value = 'test analysis' # Create analyzer analyzer = BasePRAnalyzer( mock_github_client, mock_llm_client, mock_prompt_builder, mock_pr_waiter ) # Test analyze_pr result = analyzer.analyze_pr(123, 600) # Verify workflow mock_pr_waiter.wait_for_analysis_ready.assert_called_once_with( mock_github_client, 123, 600 ) mock_prompt_builder.build_prompt.assert_called_once_with(pr_data) mock_llm_client.analyze_pr.assert_called_once_with('test prompt') assert result == 'test analysis'