56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
# backend/tests/test_pl_transport_site_service.py
|
|
from datetime import date, datetime
|
|
from unittest.mock import MagicMock
|
|
|
|
from app.services.pl_public_transport_helpers import _parse_history_date
|
|
from app.services.pl_site_plan_service import (
|
|
build_site_page_for_plan,
|
|
plan_matches_history_day,
|
|
resolve_transport_for_plan,
|
|
)
|
|
|
|
|
|
def test_parse_history_date_accepts_iso():
|
|
assert _parse_history_date("2026-09-13") == date(2026, 9, 13)
|
|
|
|
|
|
def test_parse_history_date_rejects_bad():
|
|
assert _parse_history_date("13/09/2026") is None
|
|
assert _parse_history_date("") is None
|
|
|
|
|
|
def test_plan_day_match_helpers():
|
|
day = date(2026, 9, 13)
|
|
|
|
class P:
|
|
def __init__(self, plan_date=None, pickup_time=None, delivery_time=None):
|
|
self.plan_date = plan_date
|
|
self.pickup_time = pickup_time
|
|
self.delivery_time = delivery_time
|
|
|
|
assert plan_matches_history_day(P(plan_date=day), day) is True
|
|
assert plan_matches_history_day(
|
|
P(pickup_time=datetime(2026, 9, 13, 8, 0, 0)), day
|
|
) is True
|
|
assert plan_matches_history_day(
|
|
P(delivery_time=datetime(2026, 9, 12, 18, 0, 0)), day
|
|
) is False
|
|
|
|
|
|
def test_resolve_transport_for_plan_missing_plan():
|
|
db = MagicMock()
|
|
db.query.return_value.filter.return_value.first.return_value = None
|
|
plan, transport = resolve_transport_for_plan(
|
|
db, tenant_no="t1", plan_id="missing"
|
|
)
|
|
assert plan is None
|
|
assert transport is None
|
|
|
|
|
|
def test_build_site_page_for_plan_missing_plan():
|
|
db = MagicMock()
|
|
db.query.return_value.filter.return_value.first.return_value = None
|
|
page, err = build_site_page_for_plan(db, tenant_no="t1", plan_id="missing")
|
|
assert page is None
|
|
assert err == "计划不存在"
|