import requests import json from typing import Any class MockedResponse: def __init__(self, json_data: bytes, status_code: int) -> None: self.json_data = json_data self.status_code = status_code def json(self) -> Any: return json.loads(self.json_data) def raise_for_status(self) -> None: if self.status_code not in [200, 201]: raise requests.exceptions.HTTPError() def mocked_requests_get(*args, **kwargs) -> MockedResponse: if "pulls" in args[0]: pr = args[0].split("/")[-1] with open(f"tests/fixtures/pulls_{pr}.json") as f: data = f.read() return MockedResponse(data, 200) elif "compare" in args[0]: branch, commit_sha = args[0].split("/")[-1].split("...") with open(f"tests/fixtures/compare_{branch}_{commit_sha}.json") as f: data = f.read() return MockedResponse(data, 200) elif "comments" in args[0]: pr = args[0].split("/")[-2] with open(f"tests/fixtures/comments_{pr}.json") as f: data = f.read() return MockedResponse(data, 200)