Handle review_requested event (#73091)
gitea/gitea-redmine/pipeline/head This commit looks good Details

This commit is contained in:
Benjamin Dauvergne 2024-01-16 12:21:15 +01:00
parent efe5be4862
commit 70bf0b10d6
2 changed files with 51 additions and 0 deletions

View File

@ -102,16 +102,23 @@ def get_handler(payload):
if payload['review']['type'] == 'pull_request_review_approved':
return handle_pull_request_approved, 'pull_request.approved'
return None, None
if payload.get('action') == 'review_requested':
return handle_pull_request_review_requested, 'pull_request.review_requested'
if payload.get('action') == 'edited' and payload.get('pull_request'):
return handle_pull_request_edited, 'pull_request.edited'
if (
payload.get('action') == 'closed'
and payload.get('pull_request')
and payload['pull_request'].get('merged')
):
return handle_pull_request_merged, 'pull_request.merged'
if payload.get('action') == 'closed' and payload.get('pull_request'):
return handle_pull_request_closed, 'pull_request.closed'
return None, None
@ -368,6 +375,15 @@ handle_pull_request_closed = make_handler(
)
handle_pull_request_review_requested = make_handler(
set_status(REDMINE_STATUSES['Solution proposée'], unless=CLOSED_STATUSES),
add_note(
'{sender_full_name} ({sender_username}) a demandé une relecture de {requested_reviewer_full_name} ({requested_reviewer_username}) sur une pull request sur Gitea concernant cette demande :\n\n* URL : {pull_request_url}'
),
save(),
)
@app.route('/redmine-issue/<issue_id>/', methods=['GET'])
def redmine_issue(issue_id):
try:

View File

@ -53,6 +53,11 @@ def client():
'pull_request.closed',
),
({'action': 'unknown', 'pull_request': 'foo'}, None, None),
(
{'action': 'review_requested'},
gitea_redmine.handle_pull_request_review_requested,
'pull_request.review_requested',
),
],
)
def test_get_handler(payload, expected_handler, expected_event):
@ -627,3 +632,33 @@ def test_issue_endpoint(client, mocker):
assert response.json == {'status': 'error', 'detail': 'Private issue'}
response = client.get('/redmine-issue/345/')
assert response.json == {'status': 'error', 'detail': 'Not found'}
def test_handle_pull_request_review_requested(mocker):
payload = {
'action': 'review_requested',
'sender': {
'full_name': 'John Doe',
'username': 'john.doe',
},
'requested_reviewer': {
'full_name': 'Jane Doe',
'username': 'jane.doe',
},
'pull_request': {
'url': 'https://gitea.entrouvert.org/entrouvert/gitea-redmine/pulls/2',
},
}
issue = mocker.Mock()
project = mocker.Mock()
project.parent = None
gitea_redmine.handle_pull_request_review_requested(issue, payload, project)
assert issue.status_id == gitea_redmine.REDMINE_STATUSES['Solution proposée']
assert issue.mock_calls == [mocker.call.save()]
assert issue.notes == (
'John Doe (john.doe) a demandé une relecture de Jane Doe (jane.doe) sur une pull request sur Gitea concernant cette demande :\n\n'
'* URL : https://gitea.entrouvert.org/entrouvert/gitea-redmine/pulls/2'
)
issue.save.assert_called_once()