Skip to content

Commit e51373e

Browse files
committed
Rewrite fixture for mocking a paginated response
1 parent 1f300a4 commit e51373e

File tree

1 file changed

+36
-10
lines changed

1 file changed

+36
-10
lines changed

tests/conftest.py

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ def fixture_repo_name() -> str:
3434
return "turtle"
3535

3636

37+
@pytest.fixture(name="repo_id", scope="session")
38+
def fixture_repo_id() -> int:
39+
"""Return a repository ID."""
40+
return 102909380
41+
42+
3743
@attr.s(auto_attribs=True, frozen=True, kw_only=True)
3844
class FakeProc:
3945
"""Fake for a CompletedProcess instance."""
@@ -161,28 +167,48 @@ def fixture_mock_list_labels(
161167
yield
162168

163169

164-
@pytest.fixture(name="mock_paged_list_labels")
165-
def fixture_mock_paged_list_labels(
166-
base_url: str, repo_owner: str, repo_name: str, response_list_labels: ResponseLabels
167-
) -> None:
168-
"""Mock requests for list labels."""
170+
@pytest.fixture(name="mock_list_labels_paginated")
171+
def fixture_mock_list_labels_paginated(
172+
base_url: str,
173+
repo_owner: str,
174+
repo_name: str,
175+
repo_id: int,
176+
response_get_infra: ResponseLabel,
177+
response_get_docs: ResponseLabel,
178+
response_get_bug: ResponseLabel,
179+
):
180+
"""Mock requests for list labels with pagination."""
181+
169182
with responses.RequestsMock() as rsps:
183+
170184
rsps.add(
171185
responses.GET,
172186
f"{base_url}/repos/{repo_owner}/{repo_name}/labels",
173-
json=response_list_labels[:2],
187+
json=[response_get_bug, response_get_docs],
174188
status=200,
175189
content_type="application/json",
176-
headers={'link': f'<{base_url}/repos/{repo_owner}/{repo_name}/labels?page=2&per_page=2>; rel="next", <{base_url}/repos/{repo_owner}/{repo_name}/labels?page=2&per_page=2>; rel="last"'} # noqa: E501
190+
headers={
191+
"Link": (
192+
f'<{base_url}/repositories/{repo_id}/labels?page=2>; rel="next", '
193+
f'<{base_url}/repositories/{repo_id}/labels?page=2>; rel="last"'
194+
)
195+
},
177196
)
197+
178198
rsps.add(
179199
responses.GET,
180-
f"{base_url}/repos/{repo_owner}/{repo_name}/labels",
181-
json=response_list_labels[2:],
200+
f"{base_url}/repositories/{repo_id}/labels?page=2",
201+
json=[response_get_infra],
182202
status=200,
183203
content_type="application/json",
184-
headers={'link': f'<{base_url}/repos/{repo_owner}/{repo_name}/labels?page=1&per_page=2>; rel="prev", <{base_url}/repos/{repo_owner}/{repo_name}/labels?page=1&per_page=2>; rel="first"'} # noqa: E501
204+
headers={
205+
"Link": (
206+
f'<{base_url}/repositories/{repo_id}/labels?page=1>; rel="prev", '
207+
f'<{base_url}/repositories/{repo_id}/labels?page=1>; rel="first"'
208+
)
209+
},
185210
)
211+
186212
yield
187213

188214

0 commit comments

Comments
 (0)