From e40023b9f9bbf0397910063d9df2e7accb7cd87b Mon Sep 17 00:00:00 2001 From: cottongin Date: Mon, 6 Apr 2026 21:39:00 -0400 Subject: [PATCH] fix: convert feed timestamps to US/Eastern and add test Made-with: Cursor --- src/fetcher.py | 4 ++++ tests/test_fetcher.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/fetcher.py b/src/fetcher.py index 3386187..3f84bf6 100644 --- a/src/fetcher.py +++ b/src/fetcher.py @@ -1,6 +1,7 @@ import json import logging from datetime import datetime, timezone +from zoneinfo import ZoneInfo import feedparser import requests @@ -44,6 +45,9 @@ def fetch_and_cache_articles() -> dict: except Exception: pub_date = datetime.now(timezone.utc) + # Convert to US/Eastern and make naive for SQLite + pub_date = pub_date.astimezone(ZoneInfo("America/New_York")).replace(tzinfo=None) + categories = [t.term for t in entry.get("tags", [])] content_html = "" diff --git a/tests/test_fetcher.py b/tests/test_fetcher.py index d5f378c..afdc091 100644 --- a/tests/test_fetcher.py +++ b/tests/test_fetcher.py @@ -81,3 +81,19 @@ def test_fetch_handles_feed_error(app, db): assert result["error"] is not None assert Article.query.count() == 0 + + +def test_fetch_converts_timezone_to_eastern(app, db): + with app.app_context(): + with patch("src.fetcher.requests.get") as mock_get: + mock_get.return_value = _mock_feed_response(SAMPLE_RSS_XML) + with patch("src.fetcher.process_image") as mock_img: + mock_img.return_value = ("/fake/path.jpg", 800, 450) + fetch_and_cache_articles() + + article = Article.query.filter_by(title="Test Article One").first() + # The XML has: Mon, 06 Apr 2026 12:00:00 +0000 + # US/Eastern in April is EDT (UTC-4), so it should be 08:00:00 + assert article.pub_date.tzinfo is None + assert article.pub_date.hour == 8 + assert article.pub_date.minute == 0