Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitadbd90c

Browse files
Kęstutis Miknevičiusnejch
Kęstutis Miknevičius
authored andcommitted
feat(api): add reviewer_details manager for mergrequest to get reviewers of merge request
Those changes implements 'GET /projects/:id/merge_requests/:merge_request_iid/reviewers' gitlab API call.Naming for call is not reviewers because reviewers atribute already presen in merge request response
1 parentcbc13a6 commitadbd90c

File tree

5 files changed

+85
-1
lines changed

5 files changed

+85
-1
lines changed

‎docs/gl_objects/merge_requests.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ Get a single MR::
9494

9595
mr = project.mergerequests.get(mr_iid)
9696

97+
Get MR reviewer details::
98+
mr = project.mergerequests.get(mr_iid)
99+
reviewers = mr.reviewer_details.list()
100+
97101
Create a MR::
98102

99103
mr = project.mergerequests.create({'source_branch': 'cool_feature',

‎gitlab/v4/objects/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
from .releasesimport*
5757
from .repositoriesimport*
5858
from .resource_groupsimport*
59+
from .reviewersimport*
5960
from .runnersimport*
6061
from .secure_filesimport*
6162
from .settingsimport*

‎gitlab/v4/objects/merge_requests.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
)
4343
from .notesimportProjectMergeRequestNoteManager# noqa: F401
4444
from .pipelinesimportProjectMergeRequestPipelineManager# noqa: F401
45+
from .reviewersimportProjectMergeRequestReviewerDetailManager
4546

4647
__all__= [
4748
"MergeRequest",
@@ -164,6 +165,7 @@ class ProjectMergeRequest(
164165
resourcelabelevents:ProjectMergeRequestResourceLabelEventManager
165166
resourcemilestoneevents:ProjectMergeRequestResourceMilestoneEventManager
166167
resourcestateevents:ProjectMergeRequestResourceStateEventManager
168+
reviewer_details:ProjectMergeRequestReviewerDetailManager
167169

168170
@cli.register_custom_action("ProjectMergeRequest")
169171
@exc.on_http_error(exc.GitlabMROnBuildSuccessError)

‎gitlab/v4/objects/reviewers.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
fromgitlab.baseimportRESTManager,RESTObject
2+
fromgitlab.mixinsimportListMixin
3+
4+
__all__= [
5+
"ProjectMergeRequestReviewerDetail",
6+
"ProjectMergeRequestReviewerDetailManager",
7+
]
8+
9+
10+
classProjectMergeRequestReviewerDetail(RESTObject):
11+
pass
12+
13+
14+
classProjectMergeRequestReviewerDetailManager(ListMixin,RESTManager):
15+
_path="/projects/{project_id}/merge_requests/{mr_iid}/reviewers"
16+
_obj_cls=ProjectMergeRequestReviewerDetail
17+
_from_parent_attrs= {"project_id":"project_id","mr_iid":"iid"}

‎tests/unit/objects/test_merge_requests.py

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
importpytest
99
importresponses
1010

11-
fromgitlab.v4.objectsimportProjectDeploymentMergeRequest,ProjectMergeRequest
11+
fromgitlab.v4.objectsimport (
12+
ProjectDeploymentMergeRequest,
13+
ProjectMergeRequest,
14+
ProjectMergeRequestReviewerDetail,
15+
)
1216

1317
mr_content= {
1418
"id":1,
@@ -25,8 +29,33 @@
2529
"avatar_url":"https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
2630
"web_url":"https://gitlab.com/DouweM",
2731
},
32+
"reviewers": [
33+
{
34+
"id":2,
35+
"name":"Sam Bauch",
36+
"username":"kenyatta_oconnell",
37+
"state":"active",
38+
"avatar_url":"https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
39+
"web_url":"http://gitlab.example.com//kenyatta_oconnell",
40+
}
41+
],
2842
}
2943

44+
reviewers_content= [
45+
{
46+
"user": {
47+
"id":2,
48+
"name":"Sam Bauch",
49+
"username":"kenyatta_oconnell",
50+
"state":"active",
51+
"avatar_url":"https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
52+
"web_url":"http://gitlab.example.com//kenyatta_oconnell",
53+
},
54+
"state":"unreviewed",
55+
"created_at":"2022-07-27T17:03:27.684Z",
56+
}
57+
]
58+
3059

3160
@pytest.fixture
3261
defresp_list_merge_requests():
@@ -43,6 +72,26 @@ def resp_list_merge_requests():
4372
yieldrsps
4473

4574

75+
@pytest.fixture
76+
defresp_get_merge_request_reviewers():
77+
withresponses.RequestsMock()asrsps:
78+
rsps.add(
79+
method=responses.GET,
80+
url="http://localhost/api/v4/projects/1/merge_requests/1",
81+
json=mr_content,
82+
content_type="application/json",
83+
status=200,
84+
)
85+
rsps.add(
86+
method=responses.GET,
87+
url="http://localhost/api/v4/projects/3/merge_requests/1/reviewers",
88+
json=reviewers_content,
89+
content_type="application/json",
90+
status=200,
91+
)
92+
yieldrsps
93+
94+
4695
deftest_list_project_merge_requests(project,resp_list_merge_requests):
4796
mrs=project.mergerequests.list()
4897
assertisinstance(mrs[0],ProjectMergeRequest)
@@ -54,3 +103,14 @@ def test_list_deployment_merge_requests(project, resp_list_merge_requests):
54103
mrs=deployment.mergerequests.list()
55104
assertisinstance(mrs[0],ProjectDeploymentMergeRequest)
56105
assertmrs[0].iid==mr_content["iid"]
106+
107+
108+
deftest_get_merge_request_reviewers(project,resp_get_merge_request_reviewers):
109+
mr=project.mergerequests.get(1)
110+
reviewers_details=mr.reviewer_details.list()
111+
assertisinstance(mr,ProjectMergeRequest)
112+
assertisinstance(reviewers_details,list)
113+
assertisinstance(reviewers_details[0],ProjectMergeRequestReviewerDetail)
114+
assertmr.reviewers[0]["name"]==reviewers_details[0].user["name"]
115+
assertreviewers_details[0].state=="unreviewed"
116+
assertreviewers_details[0].created_at=="2022-07-27T17:03:27.684Z"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp