Implemented the full clean rewrite for Gitea
This commit is contained in:
57
tests/test_models.py
Normal file
57
tests/test_models.py
Normal file
@@ -0,0 +1,57 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import pytest
|
||||
|
||||
from blackout_notifier.models import TEHRAN, Outage, OutageDataError, jalali_query_window
|
||||
|
||||
|
||||
def test_jalali_query_window_uses_tehran_date() -> None:
|
||||
utc_near_midnight = datetime.fromisoformat("2026-07-16T20:31:00+00:00")
|
||||
|
||||
assert jalali_query_window(utc_near_midnight, 5) == ("1405/04/26", "1405/04/31")
|
||||
|
||||
|
||||
def test_outage_parses_api_payload() -> None:
|
||||
outage = Outage.from_api(
|
||||
{
|
||||
"outage_number": 404992999001,
|
||||
"outage_date": "1405/04/27",
|
||||
"outage_start_time": "09:00",
|
||||
"outage_stop_time": "11:00",
|
||||
"outage_address": " فیدر آزمایشی ",
|
||||
"reason_outage": "مدیریت بار",
|
||||
"is_planned": True,
|
||||
}
|
||||
)
|
||||
|
||||
assert outage.outage_number == "404992999001"
|
||||
assert outage.address == "فیدر آزمایشی"
|
||||
assert outage.start_datetime() == datetime(2026, 7, 18, 9, 0, tzinfo=TEHRAN)
|
||||
|
||||
|
||||
def test_outage_supports_cross_midnight_window() -> None:
|
||||
outage = Outage(
|
||||
outage_number="1",
|
||||
outage_date="1405/04/27",
|
||||
start_time="23:00",
|
||||
stop_time="01:00",
|
||||
address="",
|
||||
reason="",
|
||||
is_planned=True,
|
||||
)
|
||||
|
||||
assert outage.stop_datetime() - outage.start_datetime() == timedelta(hours=2)
|
||||
|
||||
|
||||
def test_outage_rejects_invalid_date() -> None:
|
||||
with pytest.raises(OutageDataError, match="invalid Jalali"):
|
||||
Outage.from_api(
|
||||
{
|
||||
"outage_number": "1",
|
||||
"outage_date": "not-a-date",
|
||||
"outage_start_time": "09:00",
|
||||
"outage_stop_time": "11:00",
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user