diff --git a/aider_gitea/gitea_client.py b/aider_gitea/gitea_client.py index 0ebeb9f..587db06 100644 --- a/aider_gitea/gitea_client.py +++ b/aider_gitea/gitea_client.py @@ -129,3 +129,24 @@ class GiteaClient: if repo['owner']['login'].lower() != owner.lower(): continue yield repo['name'] + + def get_pull_request_comments( + self, owner: str, repo: str, pull_number: int, + ) -> list[dict]: + """Get comments for a specific pull request. + + Args: + owner (str): Owner of the repository. + repo (str): Name of the repository. + pull_number (int): The pull request number. + + Returns: + list[dict]: A list of comment dictionaries containing comment data. + + Raises: + requests.HTTPError: If the API request fails. + """ + url = f'{self.gitea_url}/repos/{owner}/{repo}/pulls/{pull_number}/comments' + response = self.session.get(url) + response.raise_for_status() + return response.json() diff --git a/test/test_gitea_client.py b/test/test_gitea_client.py new file mode 100644 index 0000000..9eefae0 --- /dev/null +++ b/test/test_gitea_client.py @@ -0,0 +1,52 @@ +from unittest.mock import MagicMock + +from aider_gitea.gitea_client import GiteaClient + + +class TestGiteaClient: + def setup_method(self): + """Set up test fixtures.""" + self.gitea_url = 'https://gitea.example.com' + self.token = 'test_token' + self.client = GiteaClient(self.gitea_url, self.token) + self.owner = 'test_owner' + self.repo = 'test_repo' + + def test_get_pull_request_comments(self, monkeypatch): + """Test retrieving comments for a pull request.""" + pull_number = 123 + expected_comments = [ + { + 'id': 1, + 'body': 'This is a test comment', + 'user': {'login': 'test_user'}, + 'created_at': '2023-01-01T00:00:00Z', + }, + { + 'id': 2, + 'body': 'Another test comment', + 'user': {'login': 'another_user'}, + 'created_at': '2023-01-02T00:00:00Z', + }, + ] + + # Create a mock response + mock_response = MagicMock() + mock_response.json.return_value = expected_comments + mock_response.raise_for_status = MagicMock() + + # Mock the session.get method + mock_get = MagicMock(return_value=mock_response) + monkeypatch.setattr(self.client.session, 'get', mock_get) + + # Call the method + comments = self.client.get_pull_request_comments( + self.owner, self.repo, pull_number, + ) + + # Verify the result + assert comments == expected_comments + + # Verify the correct URL was called + expected_url = f'{self.gitea_url}/api/v1/repos/{self.owner}/{self.repo}/pulls/{pull_number}/comments' + mock_get.assert_called_once_with(expected_url)