88import pytest
99import responses
1010
11- from gitlab .v4 .objects import ProjectDeploymentMergeRequest , ProjectMergeRequest
11+ from gitlab .v4 .objects import (
12+ ProjectDeploymentMergeRequest ,
13+ ProjectMergeRequest ,
14+ ProjectMergeRequestReviewerDetail ,
15+ )
1216
1317mr_content = {
1418 "id" : 1 ,
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
3261def resp_list_merge_requests ():
@@ -43,6 +72,26 @@ def resp_list_merge_requests():
4372 yield rsps
4473
4574
75+ @pytest .fixture
76+ def resp_get_merge_request_reviewers ():
77+ with responses .RequestsMock () as rsps :
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+ yield rsps
93+
94+
4695def test_list_project_merge_requests (project , resp_list_merge_requests ):
4796 mrs = project .mergerequests .list ()
4897 assert isinstance (mrs [0 ], ProjectMergeRequest )
@@ -54,3 +103,14 @@ def test_list_deployment_merge_requests(project, resp_list_merge_requests):
54103 mrs = deployment .mergerequests .list ()
55104 assert isinstance (mrs [0 ], ProjectDeploymentMergeRequest )
56105 assert mrs [0 ].iid == mr_content ["iid" ]
106+
107+
108+ def test_get_merge_request_reviewers (project , resp_get_merge_request_reviewers ):
109+ mr = project .mergerequests .get (1 )
110+ reviewers_details = mr .reviewer_details .list ()
111+ assert isinstance (mr , ProjectMergeRequest )
112+ assert isinstance (reviewers_details , list )
113+ assert isinstance (reviewers_details [0 ], ProjectMergeRequestReviewerDetail )
114+ assert mr .reviewers [0 ]["name" ] == reviewers_details [0 ].user ["name" ]
115+ assert reviewers_details [0 ].state == "unreviewed"
116+ assert reviewers_details [0 ].created_at == "2022-07-27T17:03:27.684Z"
0 commit comments