Skip to content

Commit

Permalink
Use project or group avatar for GitLab repos
Browse files Browse the repository at this point in the history
  • Loading branch information
hluk committed Oct 26, 2022
1 parent d67f8d3 commit d0daf80
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 9 deletions.
18 changes: 13 additions & 5 deletions reviewrot/gitlabstack.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,17 @@ def request_reviews(
raise Exception(
"Project %s not found for user %s" % (repo_name, user_name)
)

# get merge requests for specified username and project name
res = self.get_reviews(
uname=user_name,
project=project,
age=age,
show_last_comment=show_last_comment,
image=(
project.avatar_url
or gl.groups.get(project.namespace["id"]).avatar_url
),
)
# extend in case of a non empty result
if res:
Expand All @@ -102,14 +107,19 @@ def request_reviews(
for group_project in group_projects:

project = gl.projects.get(group_project.id)
res = self.get_reviews(uname=user_name, project=project, age=age)
res = self.get_reviews(
uname=user_name,
project=project,
age=age,
image=project.avatar_url or group.avatar_url,
)

# extend in case of a non empty result
if res:
response.extend(res)
return response

def get_reviews(self, uname, project, age=None, show_last_comment=None):
def get_reviews(self, uname, project, age=None, show_last_comment=None, image=None):
"""
Fetches merge requests for specified username(groupname) and repo(project) name.
Expand Down Expand Up @@ -193,9 +203,7 @@ def get_reviews(self, uname, project, age=None, show_last_comment=None):
time=mr_date,
updated_time=mr_updated_date,
comments=mr.user_notes_count,
# XXX - I don't know how to find gitlab avatars
# for now. Can we figure this out later?
image=GitlabReview.logo,
image=image or GitlabReview.logo,
last_comment=last_comment,
project_name=project.name,
project_url=project.web_url,
Expand Down
15 changes: 11 additions & 4 deletions test/gitlab_tests/test_gitlab.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,13 +318,14 @@ def test_get_reviews_no_age_with_last_comment(
def test_request_reviews_ssl_error_no_repo(self, mock_get_reviews, mock_gitlab):
"""Test 'request_reviews' function where there is an SSL error and no repos."""
# Set up mock return values and side effects
mock_gitlab_project = MagicMock()
mock_gitlab_group = MagicMock(name="mock_gitlab_group")
mock_gitlab_group.id = 1
mock_gitlab_group_projects = MagicMock()
mock_gitlab_group_projects.projects.list.return_value = [mock_gitlab_group]
mock_gitlab_instance = MagicMock(name="mock_gitlab_instance")
mock_gitlab_instance.groups.get.return_value = mock_gitlab_group_projects
mock_gitlab_instance.projects.get.return_value = "dummy_project"
mock_gitlab_instance.projects.get.return_value = mock_gitlab_project
mock_gitlab_instance.auth.side_effect = SSLError
mock_get_reviews.return_value = "1"
mock_gitlab.return_value = mock_gitlab_instance
Expand All @@ -343,7 +344,10 @@ def test_request_reviews_ssl_error_no_repo(self, mock_get_reviews, mock_gitlab):
mock_gitlab_instance.groups.get.assert_called_with("dummy_user")
mock_gitlab_instance.projects.get.assert_called_with(1)
mock_get_reviews.assert_called_with(
uname="dummy_user", project="dummy_project", age=None
uname="dummy_user",
project=mock_gitlab_project,
age=None,
image=mock_gitlab_project.avatar_url,
)
self.assertEqual(["1"], response)

Expand Down Expand Up @@ -411,7 +415,9 @@ def test_request_reviews_with_repo_success(self, mock_get_reviews, mock_gitlab):
"""Tests 'request_reviews' function where we have repos and no errors."""
# Set up mock return values and side effects
mock_gitlab_instance = MagicMock(name="mock_gitlab_instance")
mock_gitlab_instance.projects.get.return_value = "dummy_project"
mock_gitlab_project = MagicMock()
mock_gitlab_instance.projects.get.return_value = mock_gitlab_project
mock_gitlab_instance.projects.namespace.return_value = {"id": 123}
mock_gitlab.return_value = mock_gitlab_instance
mock_get_reviews.return_value = "1"

Expand All @@ -431,8 +437,9 @@ def test_request_reviews_with_repo_success(self, mock_get_reviews, mock_gitlab):
mock_gitlab_instance.projects.get.assert_called_with("dummy_user/dummy_repo")
mock_get_reviews.assert_called_with(
uname="dummy_user",
project="dummy_project",
project=mock_gitlab_project,
age=None,
show_last_comment=None,
image=mock_gitlab_project.avatar_url,
)
self.assertEqual(["1"], response)

0 comments on commit d0daf80

Please sign in to comment.