Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 26 additions & 45 deletions web/tests/test_pandas_web.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,30 @@
from unittest.mock import ( # noqa: TID251
mock_open,
patch,
)

from unittest.mock import mock_open, patch
import pytest
import requests

from web.pandas_web import Preprocessors


class MockResponse:
"""Minimal mock for requests.Response with correct error behavior."""
def __init__(self, status_code: int, response: dict) -> None:
self.status_code = status_code
self._resp = response

def json(self):
return self._resp

@staticmethod
def raise_for_status() -> None:
return
def raise_for_status(self) -> None:
"""Raise an HTTPError for non-2xx responses (important behavior)."""
if not (200 <= self.status_code < 300):
raise requests.HTTPError(f"HTTP {self.status_code}")

# Add context manager support
def __enter__(self):
return self

def __exit__(self, exc_type, exc, tb):
return False


@pytest.fixture
Expand All @@ -31,51 +36,27 @@ def context() -> dict:


@pytest.fixture
def mock_response(monkeypatch, request) -> None:
def mock_response(monkeypatch, request):
"""Safer fixture — ensures parametrize includes correct tuple."""

def mocked_resp(*args, **kwargs):
if not hasattr(request, "param") or len(request.param) != 2:
raise RuntimeError(
"mock_response must be parametrized as (status_code, response_json)"
)
status_code, response = request.param
return MockResponse(status_code, response)

monkeypatch.setattr(requests, "get", mocked_resp)


_releases_list = [
{
"prerelease": False,
"published_at": "2024-01-19T03:34:05Z",
"tag_name": "v1.5.6",
"assets": None,
},
{
"prerelease": False,
"published_at": "2023-11-10T19:07:37Z",
"tag_name": "v2.1.3",
"assets": None,
},
{
"prerelease": False,
"published_at": "2023-08-30T13:24:32Z",
"tag_name": "v2.1.0",
"assets": None,
},
{
"prerelease": False,
"published_at": "2023-04-30T13:24:32Z",
"tag_name": "v2.0.0",
"assets": None,
},
{
"prerelease": True,
"published_at": "2023-01-19T03:34:05Z",
"tag_name": "v1.5.3xd",
"assets": None,
},
{
"prerelease": False,
"published_at": "2027-01-19T03:34:05Z",
"tag_name": "v10.0.1",
"assets": None,
},
{"prerelease": False, "published_at": "2024-01-19T03:34:05Z", "tag_name": "v1.5.6", "assets": None},
{"prerelease": False, "published_at": "2023-11-10T19:07:37Z", "tag_name": "v2.1.3", "assets": None},
{"prerelease": False, "published_at": "2023-08-30T13:24:32Z", "tag_name": "v2.1.0", "assets": None},
{"prerelease": False, "published_at": "2023-04-30T13:24:32Z", "tag_name": "v2.0.0", "assets": None},
{"prerelease": True, "published_at": "2023-01-19T03:34:05Z", "tag_name": "v1.5.3xd", "assets": None},
{"prerelease": False, "published_at": "2027-01-19T03:34:05Z", "tag_name": "v10.0.1", "assets": None},
]


Expand Down
Loading