fix: restore Hong Kong CoWIN reference curve
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
import threading
|
||||
from datetime import datetime, timezone
|
||||
|
||||
import httpx
|
||||
|
||||
from src.data_collection import cowin_sources
|
||||
from src.data_collection.cowin_sources import CowinSourceMixin
|
||||
|
||||
|
||||
class _FakeResponse:
|
||||
content = b"{}"
|
||||
|
||||
def __init__(self, payload):
|
||||
self._payload = payload
|
||||
self.text = "{}"
|
||||
|
||||
def json(self):
|
||||
return self._payload
|
||||
|
||||
def raise_for_status(self):
|
||||
return None
|
||||
|
||||
|
||||
class _FakeCowinCollector(CowinSourceMixin):
|
||||
timeout = 2
|
||||
cowin_obs_cache_ttl_sec = 0
|
||||
_cowin_obs_cache = {}
|
||||
_cowin_obs_cache_lock = threading.Lock()
|
||||
user_agent = "test"
|
||||
|
||||
def _http_get(self, url):
|
||||
raise httpx.ConnectError("[SSL: CERTIFICATE_VERIFY_FAILED] unable to get local issuer certificate")
|
||||
|
||||
|
||||
def test_cowin_current_retries_without_tls_verification_when_chain_is_incomplete(monkeypatch):
|
||||
calls = []
|
||||
|
||||
def fake_get(url, **kwargs):
|
||||
calls.append({"url": url, **kwargs})
|
||||
return _FakeResponse(
|
||||
{
|
||||
"station": 6087,
|
||||
"minutely": [
|
||||
{"obstime": "2026-05-28T07:59:00", "value1": 30.1},
|
||||
{"obstime": "2026-05-28T08:00:00", "value1": 30.0},
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
monkeypatch.setattr(cowin_sources.requests, "get", fake_get)
|
||||
|
||||
current = _FakeCowinCollector().fetch_cowin_obs_current("hong kong")
|
||||
|
||||
assert current is not None
|
||||
assert current["station_code"] == "6087"
|
||||
assert current["current"]["temp"] == 30.0
|
||||
assert current["obs_time"] == "2026-05-28T08:00:00+08:00"
|
||||
assert calls
|
||||
assert calls[0]["verify"] is False
|
||||
|
||||
|
||||
def test_cowin_today_series_returns_hong_kong_local_intraday_points(monkeypatch):
|
||||
def fake_get(url, **kwargs):
|
||||
return _FakeResponse(
|
||||
{
|
||||
"station": 6087,
|
||||
"minutely": [
|
||||
{"obstime": "2026-05-27T23:59:00", "value1": 29.8},
|
||||
{"obstime": "2026-05-28T00:00:00", "value1": 29.9},
|
||||
{"obstime": "2026-05-28T07:58:00", "value1": 30.1},
|
||||
{"obstime": "2026-05-28T08:00:00", "value1": 30.0},
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
monkeypatch.setattr(cowin_sources.requests, "get", fake_get)
|
||||
|
||||
points = _FakeCowinCollector().fetch_cowin_obs_today_series(
|
||||
"hong kong",
|
||||
now_utc=datetime(2026, 5, 28, 0, 5, tzinfo=timezone.utc),
|
||||
)
|
||||
|
||||
assert points == [
|
||||
{"time": "00:00", "temp": 29.9},
|
||||
{"time": "07:58", "temp": 30.1},
|
||||
{"time": "08:00", "temp": 30.0},
|
||||
]
|
||||
Reference in New Issue
Block a user