8
8
import pytest
9
9
import responses
10
10
11
- from gitlab .v4 .objects import ProjectDeploymentMergeRequest , ProjectMergeRequest
11
+ from gitlab .v4 .objects import (
12
+ ProjectDeploymentMergeRequest ,
13
+ ProjectMergeRequest ,
14
+ ProjectMergeRequestReviewerDetail ,
15
+ )
12
16
13
17
mr_content = {
14
18
"id" : 1 ,
25
29
"avatar_url" : "https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png" ,
26
30
"web_url" : "https://gitlab.com/DouweM" ,
27
31
},
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
+ ],
28
42
}
29
43
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
+
30
59
31
60
@pytest .fixture
32
61
def resp_list_merge_requests ():
@@ -43,6 +72,26 @@ def resp_list_merge_requests():
43
72
yield rsps
44
73
45
74
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
+
46
95
def test_list_project_merge_requests (project , resp_list_merge_requests ):
47
96
mrs = project .mergerequests .list ()
48
97
assert isinstance (mrs [0 ], ProjectMergeRequest )
@@ -54,3 +103,14 @@ def test_list_deployment_merge_requests(project, resp_list_merge_requests):
54
103
mrs = deployment .mergerequests .list ()
55
104
assert isinstance (mrs [0 ], ProjectDeploymentMergeRequest )
56
105
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