95 lines
3.1 KiB
Python
95 lines
3.1 KiB
Python
from pathlib import Path
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from aider_gitea import push_changes
|
|
|
|
|
|
class TestIssueCommentOnFailure:
|
|
def setup_method(self):
|
|
self.cwd = Path('/tmp/test-repo')
|
|
self.branch_name = 'issue-123-test-branch'
|
|
self.issue_number = '123'
|
|
self.issue_title = 'Test Issue'
|
|
self.base_branch = 'main'
|
|
self.gitea_client = MagicMock()
|
|
self.owner = 'test-owner'
|
|
self.repo = 'test-repo'
|
|
|
|
@patch('aider_gitea.has_commits_on_branch', return_value=True)
|
|
@patch('aider_gitea.get_commit_messages', return_value=['Test commit'])
|
|
@patch('aider_gitea.run_cmd')
|
|
def test_comment_on_push_failure(
|
|
self,
|
|
mock_run_cmd,
|
|
mock_get_commit_messages,
|
|
mock_has_commits,
|
|
):
|
|
# Setup run_cmd to fail on git push
|
|
mock_run_cmd.return_value = False
|
|
|
|
# Call push_changes
|
|
result = push_changes(
|
|
self.cwd,
|
|
self.branch_name,
|
|
self.issue_number,
|
|
self.issue_title,
|
|
self.base_branch,
|
|
self.gitea_client,
|
|
self.owner,
|
|
self.repo,
|
|
)
|
|
|
|
# Verify result is False
|
|
assert result is False
|
|
|
|
# Verify create_issue_comment was called with appropriate message
|
|
self.gitea_client.create_issue_comment.assert_called_once()
|
|
args, kwargs = self.gitea_client.create_issue_comment.call_args
|
|
assert kwargs['owner'] == self.owner
|
|
assert kwargs['repo'] == self.repo
|
|
assert kwargs['issue_number'] == self.issue_number
|
|
assert 'Failed to push branch' in kwargs['body']
|
|
assert '❌ **Automated Solution Failed**' in kwargs['body']
|
|
|
|
@patch('aider_gitea.has_commits_on_branch', return_value=True)
|
|
@patch('aider_gitea.get_commit_messages', return_value=['Test commit'])
|
|
@patch('aider_gitea.run_cmd')
|
|
def test_comment_on_pr_creation_failure(
|
|
self,
|
|
mock_run_cmd,
|
|
mock_get_commit_messages,
|
|
mock_has_commits,
|
|
):
|
|
# Setup run_cmd to succeed on git push
|
|
mock_run_cmd.return_value = True
|
|
|
|
# Setup create_pull_request to fail
|
|
self.gitea_client.create_pull_request.side_effect = Exception(
|
|
'PR creation failed',
|
|
)
|
|
|
|
# Call push_changes
|
|
result = push_changes(
|
|
self.cwd,
|
|
self.branch_name,
|
|
self.issue_number,
|
|
self.issue_title,
|
|
self.base_branch,
|
|
self.gitea_client,
|
|
self.owner,
|
|
self.repo,
|
|
)
|
|
|
|
# Verify result is False
|
|
assert result is False
|
|
|
|
# Verify create_issue_comment was called with appropriate message
|
|
self.gitea_client.create_issue_comment.assert_called_once()
|
|
args, kwargs = self.gitea_client.create_issue_comment.call_args
|
|
assert kwargs['owner'] == self.owner
|
|
assert kwargs['repo'] == self.repo
|
|
assert kwargs['issue_number'] == self.issue_number
|
|
assert 'Failed to create pull request' in kwargs['body']
|
|
assert '⚠️ **Partial Automation Success**' in kwargs['body']
|
|
assert self.branch_name in kwargs['body']
|