Skip to content

Commit b3dfda2

Browse files
authored
Do not mention blocked users (#14)
* Do not mention block users Signed-off-by: thepetk <[email protected]> * Add test cases for not mentioning blocked users Signed-off-by: thepetk <[email protected]> --------- Signed-off-by: thepetk <[email protected]>
1 parent d8e5bf9 commit b3dfda2

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

gitlab2sentry/utils/gitlab_provider.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,10 @@ def _get_default_mentions(self, project: Project) -> str:
221221
[
222222
f"@{member.username}"
223223
for member in project.members.all()
224-
if member.access_level >= GITLAB_MENTIONS_ACCESS_LEVEL
224+
if (
225+
member.access_level >= GITLAB_MENTIONS_ACCESS_LEVEL
226+
and member.state != "blocked"
227+
)
225228
]
226229
)
227230

tests/conftest.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,34 @@ def sentry_provider_fixture():
4848
yield SentryProvider()
4949

5050

51+
class TestGitlabMember:
52+
def __init__(self, username, access_level, state):
53+
self.username = username
54+
self.access_level = access_level
55+
self.state = state
56+
57+
58+
TEST_GITLAB_PROJECT_MEMBERS = [
59+
TestGitlabMember("active_user", 40, "active"),
60+
TestGitlabMember("blocked_user", 40, "blocked")
61+
]
62+
63+
64+
class TestGitlabProject:
65+
def __init__(self):
66+
self.members = TestGitlabMemberManager()
67+
68+
69+
class TestGitlabMemberManager:
70+
def all(self):
71+
return TEST_GITLAB_PROJECT_MEMBERS
72+
73+
74+
@pytest.fixture
75+
def gitlab_project_fixture():
76+
yield TestGitlabProject()
77+
78+
5179
def create_test_g2s_project(**kwargs):
5280
return G2SProject(
5381
1,

tests/test_gitlab_provider.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,18 @@ def test_from_iso_to_datetime(gitlab_provider_fixture):
8686
)
8787

8888

89+
def test_get_default_mentions(gitlab_provider_fixture, gitlab_project_fixture):
90+
_mentioned_members = (
91+
gitlab_provider_fixture._get_default_mentions(gitlab_project_fixture).split(", ")
92+
)
93+
_project_non_blocked_members = [
94+
member
95+
for member in gitlab_project_fixture.members.all()
96+
if member.state != "blocked"
97+
]
98+
assert len(_mentioned_members) == len(_project_non_blocked_members)
99+
100+
89101
def test_get_project(gitlab_provider_fixture, mocker):
90102
mocker.patch.object(
91103
gitlab_provider_fixture._gql_client,

0 commit comments

Comments
 (0)