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

Commitf41b093

Browse files
committed
feat(api): add merge request approval state
Add support for merge request approval state
1 parent5a1678f commitf41b093

File tree

4 files changed

+52
-0
lines changed

4 files changed

+52
-0
lines changed

‎docs/gl_objects/mr_approvals.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ References
2121
+:class:`gitlab.v4.objects.ProjectMergeRequestApprovalRule`
2222
+:class:`gitlab.v4.objects.ProjectMergeRequestApprovalRuleManager`
2323
+:attr:`gitlab.v4.objects.ProjectMergeRequest.approval_rules`
24+
+:class:`gitlab.v4.objects.ProjectMergeRequestApprovalState`
25+
+:class:`gitlab.v4.objects.ProjectMergeRequestApprovalStateManager`
26+
+:attr:`gitlab.v4.objects.ProjectMergeRequest.approval_state`
2427

2528
* GitLab API: https://docs.gitlab.com/ee/api/merge_request_approvals.html
2629

@@ -46,6 +49,10 @@ Get project-level or MR-level MR approvals settings::
4649

4750
mr_mras = mr.approvals.get()
4851

52+
Get MR-level approval state::
53+
54+
mr_approval_state = mr.approval_state.get()
55+
4956
Change project-level or MR-level MR approvals settings::
5057

5158
p_mras.approvals_before_merge = 2

‎gitlab/v4/objects/merge_request_approvals.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
"ProjectMergeRequestApprovalManager",
2020
"ProjectMergeRequestApprovalRule",
2121
"ProjectMergeRequestApprovalRuleManager",
22+
"ProjectMergeRequestApprovalState",
23+
"ProjectMergeRequestApprovalStateManager",
2224
]
2325

2426

@@ -204,3 +206,13 @@ def create(self, data, **kwargs):
204206
new_data["id"]=self._from_parent_attrs["project_id"]
205207
new_data["merge_request_iid"]=self._from_parent_attrs["mr_iid"]
206208
returnCreateMixin.create(self,new_data,**kwargs)
209+
210+
211+
classProjectMergeRequestApprovalState(RESTObject):
212+
pass
213+
214+
215+
classProjectMergeRequestApprovalStateManager(GetWithoutIdMixin,RESTManager):
216+
_path="/projects/%(project_id)s/merge_requests/%(mr_iid)s/approval_state"
217+
_obj_cls=ProjectMergeRequestApprovalState
218+
_from_parent_attrs= {"project_id":"project_id","mr_iid":"iid"}

‎gitlab/v4/objects/merge_requests.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from .merge_request_approvalsimport (# noqa: F401
2727
ProjectMergeRequestApprovalManager,
2828
ProjectMergeRequestApprovalRuleManager,
29+
ProjectMergeRequestApprovalStateManager,
2930
)
3031
from .notesimportProjectMergeRequestNoteManager# noqa: F401
3132
from .pipelinesimportProjectMergeRequestPipelineManager# noqa: F401
@@ -140,6 +141,7 @@ class ProjectMergeRequest(
140141
_id_attr="iid"
141142

142143
approval_rules:ProjectMergeRequestApprovalRuleManager
144+
approval_state:ProjectMergeRequestApprovalStateManager
143145
approvals:ProjectMergeRequestApprovalManager
144146
awardemojis:ProjectMergeRequestAwardEmojiManager
145147
diffs:"ProjectMergeRequestDiffManager"

‎tests/unit/objects/test_project_merge_request_approvals.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
withresponses.RequestsMock(assert_all_requests_are_fired=False)asrsps:
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
assertar_1.approvals_required==updated_approval_rule_approvals_required
316332
assertlen(ar_1.eligible_approvers)==len(updated_approval_rule_user_ids)
317333
assertar_1.eligible_approvers[0]["id"]==updated_approval_rule_user_ids[0]
334+
335+
336+
deftest_get_merge_request_approval_state(project,resp_snippet):
337+
merge_request=project.mergerequests.get(1)
338+
approval_state=merge_request.approval_state.get()
339+
assertisinstance(
340+
approval_state,
341+
gitlab.v4.objects.merge_request_approvals.ProjectMergeRequestApprovalState,
342+
)
343+
assertnotapproval_state.approval_rules_overwritten
344+
assertlen(approval_state.rules)==1
345+
assertapproval_state.rules[0]["name"]==approval_rule_name
346+
assertapproval_state.rules[0]["id"]==approval_rule_id
347+
assertnotapproval_state.rules[0]["approved"]
348+
assertapproval_state.rules[0]["approved_by"]== []

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp