Skip to content

Commit 2f18bdc

Browse files
authored
tests: update merge requests with related_issues
Add related_issues mock endpoint call and resp test
1 parent 0b74c59 commit 2f18bdc

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

tests/unit/objects/test_merge_requests.py

+104
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
ProjectDeploymentMergeRequest,
1414
ProjectMergeRequest,
1515
ProjectMergeRequestReviewerDetail,
16+
ProjectIssue,
1617
)
1718

1819
mr_content = {
@@ -57,6 +58,78 @@
5758
}
5859
]
5960

61+
related_issues = [
62+
{
63+
"id": 1,
64+
"iid": 1,
65+
"project_id": 1,
66+
"title": "Fake Title for Merge Requests via API",
67+
"description": "Something here",
68+
"state": "closed",
69+
"created_at": "2024-05-14T04:01:40.042Z",
70+
"updated_at": "2024-06-13T05:29:13.661Z",
71+
"closed_at": "2024-06-13T05:29:13.602Z",
72+
"closed_by": {
73+
"id": 2,
74+
"name": "Sam Bauch",
75+
"username": "kenyatta_oconnell",
76+
"state": "active",
77+
"avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
78+
"web_url": "http://gitlab.example.com//kenyatta_oconnell",
79+
},
80+
"labels": [
81+
"FakeCategory",
82+
"fake:ml",
83+
],
84+
"assignees": [
85+
{
86+
"id": 2,
87+
"name": "Sam Bauch",
88+
"username": "kenyatta_oconnell",
89+
"state": "active",
90+
"avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
91+
"web_url": "http://gitlab.example.com//kenyatta_oconnell",
92+
}
93+
],
94+
"author": {
95+
"id": 2,
96+
"name": "Sam Bauch",
97+
"username": "kenyatta_oconnell",
98+
"state": "active",
99+
"avatar_url": "https://www.gravatar.com/avatar/956c92487c6f6f7616b536927e22c9a0?s=80&d=identicon",
100+
"web_url": "http://gitlab.example.com//kenyatta_oconnell",
101+
},
102+
"type": "ISSUE",
103+
"assignee": {
104+
"id": 4459593,
105+
"username": "fakeuser",
106+
"name": "Fake User",
107+
"state": "active",
108+
"locked": False,
109+
"avatar_url": "https://example.com/uploads/-/system/user/avatar/4459593/avatar.png",
110+
"web_url": "https://example.com/fakeuser",
111+
},
112+
"user_notes_count": 9,
113+
"merge_requests_count": 0,
114+
"upvotes": 1,
115+
"downvotes": 0,
116+
"due_date": None,
117+
"confidential": False,
118+
"discussion_locked": None,
119+
"issue_type": "issue",
120+
"web_url": "https://example.com/fakeorg/fakeproject/-/issues/461536",
121+
"time_stats": {
122+
"time_estimate": 0,
123+
"total_time_spent": 0,
124+
"human_time_estimate": None,
125+
"human_total_time_spent": None,
126+
},
127+
"task_completion_status": {"count": 0, "completed_count": 0},
128+
"weight": None,
129+
"blocking_issues_count": 0,
130+
}
131+
]
132+
60133

61134
@pytest.fixture
62135
def resp_list_merge_requests():
@@ -93,6 +166,28 @@ def resp_get_merge_request_reviewers():
93166
yield rsps
94167

95168

169+
@pytest.fixture
170+
def resp_list_merge_requests_related_issues():
171+
with responses.RequestsMock() as rsps:
172+
rsps.add(
173+
method=responses.GET,
174+
url=re.compile(
175+
r"http://localhost/api/v4/projects/1/(deployments/1/)?merge_requests"
176+
),
177+
json=[mr_content],
178+
content_type="application/json",
179+
status=200,
180+
)
181+
rsps.add(
182+
method=responses.GET,
183+
url="http://localhost/api/v4/projects/1/merge_requests/1/related_issues",
184+
json=related_issues,
185+
content_type="application/json",
186+
status=200,
187+
)
188+
yield rsps
189+
190+
96191
def test_list_project_merge_requests(project, resp_list_merge_requests):
97192
mrs = project.mergerequests.list()
98193
assert isinstance(mrs[0], ProjectMergeRequest)
@@ -115,3 +210,12 @@ def test_get_merge_request_reviewers(project, resp_get_merge_request_reviewers):
115210
assert mr.reviewers[0]["name"] == reviewers_details[0].user["name"]
116211
assert reviewers_details[0].state == "unreviewed"
117212
assert reviewers_details[0].created_at == "2022-07-27T17:03:27.684Z"
213+
214+
215+
def test_list_related_issues(project, resp_list_merge_requests_related_issues):
216+
mr = project.mergerequests.get(1)
217+
this_mr_related_issue = mr.related_issues.list()
218+
assert isinstance(mr, ProjectMergeRequest)
219+
assert isinstance(this_mr_related_issue, list)
220+
assert isinstance(this_mr_related_issue[0], ProjectIssue)
221+
assert this_mr_related_issue[0]["title"] == related_issues[0]["title"]

0 commit comments

Comments
 (0)