from datetime import UTC, datetime from app.services.earth_news import ParsedNewsItem, _serialize_item def test_serialize_item_includes_region_anchor_for_cruise(): item = ParsedNewsItem( id="google-apac:test", title="Example APAC story", summary="Example summary", url="https://example.com/story", source="Example Source", feed_name="Global Monitor / APAC", feed_region="asia-pacific", homepage_url="https://example.com", published_at=datetime(2026, 4, 23, 2, 30, tzinfo=UTC), ) payload = _serialize_item(item, active_region="asia-pacific") assert payload["latitude"] == 1.3521 assert payload["longitude"] == 103.8198 assert payload["location_label"] == "亚太" assert payload["location_inferred"] is True assert payload["is_focus_match"] is True assert payload["published_at"] == "2026-04-23T02:30:00Z" def test_serialize_item_falls_back_to_global_anchor(): item = ParsedNewsItem( id="custom:test", title="Fallback story", summary="Fallback summary", url="https://example.com/fallback", source="Fallback Source", feed_name="Fallback Feed", feed_region="unknown-region", homepage_url="https://example.com", published_at=None, ) payload = _serialize_item(item, active_region="americas") assert payload["latitude"] == 20.0 assert payload["longitude"] == 0.0 assert payload["location_label"] == "全球" assert payload["location_inferred"] is True assert payload["is_focus_match"] is False assert payload["published_at"] is None