| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent d9ea716 commit 89c18c6
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -78,6 +78,11 @@ List MR-level MR approval rules:: | |||
| 78 | 78 | ||
| 79 | 79 | mr.approval_rules.list() | |
| 80 | 80 | ||
| 81 | + Get a single MR approval rule:: | ||
| 82 | + | ||
| 83 | + approval_rule_id = 123 | ||
| 84 | + mr_approvalrule = mr.approval_rules.get(approval_rule_id) | ||
| 85 | + | ||
| 81 | 86 | Delete MR-level MR approval rule:: | |
| 82 | 87 | ||
| 83 | 88 | rules = mr.approval_rules.list() | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,9 +1,10 @@ | |||
| 1 | - from typing import Any, cast, Dict, List, Optional, TYPE_CHECKING | ||
| 1 | + from typing import Any, cast, Dict, List, Optional, TYPE_CHECKING, Union | ||
| 2 | 2 | ||
| 3 | 3 | from gitlab import exceptions as exc | |
| 4 | 4 | from gitlab.base import RESTManager, RESTObject | |
| 5 | 5 | from gitlab.mixins import ( | |
| 6 | 6 | CreateMixin, | |
| 7 | + CRUDMixin, | ||
| 7 | 8 | DeleteMixin, | |
| 8 | 9 | GetWithoutIdMixin, | |
| 9 | 10 | ListMixin, | |
@@ -189,9 +190,7 @@ def save(self, **kwargs: Any) -> None: | |||
| 189 | 190 | SaveMixin.save(self, **kwargs) | |
| 190 | 191 | ||
| 191 | 192 | ||
| 192 | - class ProjectMergeRequestApprovalRuleManager( | ||
| 193 | - ListMixin, UpdateMixin, CreateMixin, DeleteMixin, RESTManager | ||
| 194 | - ): | ||
| 193 | + class ProjectMergeRequestApprovalRuleManager(CRUDMixin, RESTManager): | ||
| 195 | 194 | _path = "/projects/{project_id}/merge_requests/{mr_iid}/approval_rules" | |
| 196 | 195 | _obj_cls = ProjectMergeRequestApprovalRule | |
| 197 | 196 | _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} | |
@@ -214,6 +213,13 @@ class ProjectMergeRequestApprovalRuleManager( | |||
| 214 | 213 | optional=("approval_project_rule_id", "user_ids", "group_ids"), | |
| 215 | 214 | ) | |
| 216 | 215 | ||
| 216 | + def get( | ||
| 217 | + self, id: Union[str, int], lazy: bool = False, **kwargs: Any | ||
| 218 | + ) -> ProjectMergeRequestApprovalRule: | ||
| 219 | + return cast( | ||
| 220 | + ProjectMergeRequestApprovalRule, super().get(id=id, lazy=lazy, **kwargs) | ||
| 221 | + ) | ||
| 222 | + | ||
| 217 | 223 | def create( | |
| 218 | 224 | self, data: Optional[Dict[str, Any]] = None, **kwargs: Any | |
| 219 | 225 | ) -> RESTObject: | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -100,6 +100,13 @@ def resp_mr_approval_rules(): | |||
| 100 | 100 | content_type="application/json", | |
| 101 | 101 | status=200, | |
| 102 | 102 | ) | |
| 103 | + rsps.add( | ||
| 104 | + method=responses.GET, | ||
| 105 | + url="http://localhost/api/v4/projects/1/merge_requests/1/approval_rules/1", | ||
| 106 | + json=mr_ars_content[0], | ||
| 107 | + content_type="application/json", | ||
| 108 | + status=200, | ||
| 109 | + ) | ||
| 103 | 110 | rsps.add( | |
| 104 | 111 | method=responses.GET, | |
| 105 | 112 | url="http://localhost/api/v4/projects/1/merge_requests/1/approval_state", | |
@@ -243,6 +250,17 @@ def test_update_merge_request_approval_rule(project, resp_mr_approval_rules): | |||
| 243 | 250 | assert ar_1.eligible_approvers[0]["id"] == updated_approval_rule_user_ids[0] | |
| 244 | 251 | ||
| 245 | 252 | ||
| 253 | + def test_get_merge_request_approval_rule(project, resp_mr_approval_rules): | ||
| 254 | + merge_request = project.mergerequests.get(1, lazy=True) | ||
| 255 | + approval_rule = merge_request.approval_rules.get(approval_rule_id) | ||
| 256 | + assert isinstance( | ||
| 257 | + approval_rule, | ||
| 258 | + gitlab.v4.objects.merge_request_approvals.ProjectMergeRequestApprovalRule, | ||
| 259 | + ) | ||
| 260 | + assert approval_rule.name == approval_rule_name | ||
| 261 | + assert approval_rule.id == approval_rule_id | ||
| 262 | + | ||
| 263 | + | ||
| 246 | 264 | def test_get_merge_request_approval_state(project, resp_mr_approval_rules): | |
| 247 | 265 | merge_request = project.mergerequests.get(1, lazy=True) | |
| 248 | 266 | approval_state = merge_request.approval_state.get() | |
| Back | FazBrowse Home | New Git URL |
0 commit comments