@@ -178,6 +178,15 @@ def resp_snippet():
178178 }
179179 ]
180180
181+ approval_state_rules = copy .deepcopy (mr_ars_content )
182+ approval_state_rules [0 ]["approved" ] = False
183+ approval_state_rules [0 ]["approved_by" ] = []
184+
185+ mr_approval_state_content = {
186+ "approval_rules_overwritten" : False ,
187+ "rules" : approval_state_rules ,
188+ }
189+
181190 with responses .RequestsMock (assert_all_requests_are_fired = False ) as rsps :
182191 rsps .add (
183192 method = responses .GET ,
@@ -200,6 +209,13 @@ def resp_snippet():
200209 content_type = "application/json" ,
201210 status = 200 ,
202211 )
212+ rsps .add (
213+ method = responses .GET ,
214+ url = "http://localhost/api/v4/projects/1/merge_requests/1/approval_state" ,
215+ json = mr_approval_state_content ,
216+ content_type = "application/json" ,
217+ status = 200 ,
218+ )
203219
204220 new_mr_ars_content = dict (mr_ars_content [0 ])
205221 new_mr_ars_content ["name" ] = new_approval_rule_name
@@ -315,3 +331,18 @@ def test_update_merge_request_approval_rule(project, resp_snippet):
315331 assert ar_1 .approvals_required == updated_approval_rule_approvals_required
316332 assert len (ar_1 .eligible_approvers ) == len (updated_approval_rule_user_ids )
317333 assert ar_1 .eligible_approvers [0 ]["id" ] == updated_approval_rule_user_ids [0 ]
334+
335+
336+ def test_get_merge_request_approval_state (project , resp_snippet ):
337+ merge_request = project .mergerequests .get (1 )
338+ approval_state = merge_request .approval_state .get ()
339+ assert isinstance (
340+ approval_state ,
341+ gitlab .v4 .objects .merge_request_approvals .ProjectMergeRequestApprovalState ,
342+ )
343+ assert not approval_state .approval_rules_overwritten
344+ assert len (approval_state .rules ) == 1
345+ assert approval_state .rules [0 ]["name" ] == approval_rule_name
346+ assert approval_state .rules [0 ]["id" ] == approval_rule_id
347+ assert not approval_state .rules [0 ]["approved" ]
348+ assert approval_state .rules [0 ]["approved_by" ] == []
0 commit comments