| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent cbc13a6 commit adbd90c
5 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -94,6 +94,10 @@ Get a single MR:: | |||
| 94 | 94 | ||
| 95 | 95 | mr = project.mergerequests.get(mr_iid) | |
| 96 | 96 | ||
| 97 | + Get MR reviewer details:: | ||
| 98 | + mr = project.mergerequests.get(mr_iid) | ||
| 99 | + reviewers = mr.reviewer_details.list() | ||
| 100 | + | ||
| 97 | 101 | Create a MR:: | |
| 98 | 102 | ||
| 99 | 103 | mr = project.mergerequests.create({'source_branch': 'cool_feature', | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -56,6 +56,7 @@ | |||
| 56 | 56 | from .releases import * | |
| 57 | 57 | from .repositories import * | |
| 58 | 58 | from .resource_groups import * | |
| 59 | + from .reviewers import * | ||
| 59 | 60 | from .runners import * | |
| 60 | 61 | from .secure_files import * | |
| 61 | 62 | from .settings import * | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -42,6 +42,7 @@ | |||
| 42 | 42 | ) | |
| 43 | 43 | from .notes import ProjectMergeRequestNoteManager # noqa: F401 | |
| 44 | 44 | from .pipelines import ProjectMergeRequestPipelineManager # noqa: F401 | |
| 45 | + from .reviewers import ProjectMergeRequestReviewerDetailManager | ||
| 45 | 46 | ||
| 46 | 47 | __all__ = [ | |
| 47 | 48 | "MergeRequest", | |
@@ -164,6 +165,7 @@ class ProjectMergeRequest( | |||
| 164 | 165 | resourcelabelevents: ProjectMergeRequestResourceLabelEventManager | |
| 165 | 166 | resourcemilestoneevents: ProjectMergeRequestResourceMilestoneEventManager | |
| 166 | 167 | resourcestateevents: ProjectMergeRequestResourceStateEventManager | |
| 168 | + reviewer_details: ProjectMergeRequestReviewerDetailManager | ||
| 167 | 169 | ||
| 168 | 170 | @cli.register_custom_action("ProjectMergeRequest") | |
| 169 | 171 | @exc.on_http_error(exc.GitlabMROnBuildSuccessError) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,17 @@ | |||
| 1 | + from gitlab.base import RESTManager, RESTObject | ||
| 2 | + from gitlab.mixins import ListMixin | ||
| 3 | + | ||
| 4 | + __all__ = [ | ||
| 5 | + "ProjectMergeRequestReviewerDetail", | ||
| 6 | + "ProjectMergeRequestReviewerDetailManager", | ||
| 7 | + ] | ||
| 8 | + | ||
| 9 | + | ||
| 10 | + class ProjectMergeRequestReviewerDetail(RESTObject): | ||
| 11 | + pass | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + class ProjectMergeRequestReviewerDetailManager(ListMixin, RESTManager): | ||
| 15 | + _path = "/projects/{project_id}/merge_requests/{mr_iid}/reviewers" | ||
| 16 | + _obj_cls = ProjectMergeRequestReviewerDetail | ||
| 17 | + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -8,7 +8,11 @@ | |||
| 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,8 +29,33 @@ | |||
| 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" | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments