import unittest
from ai_daily_report.models import SourceConfig
from ai_daily_report.sources.rss import parse_rss_items
class RssSourceTests(unittest.TestCase):
def test_parse_rss_items_filters_entries_older_than_configured_age(self):
config = SourceConfig(
name="InfoQ AI",
type="rss",
url="https://feed.example/rss",
max_item_age_days=3,
)
xml = """
-
Fresh item
https://example.com/fresh
Fresh summary
Sun, 07 Jun 2026 06:25:00 GMT
-
Old item
https://example.com/old
Old summary
Mon, 01 Jun 2026 06:25:00 GMT
"""
items = parse_rss_items(config, xml, run_date="2026-06-08")
self.assertEqual([item["title_raw"] for item in items], ["Fresh item"])
def test_parse_rss_items_keeps_unparseable_dates_to_avoid_false_drops(self):
config = SourceConfig(
name="InfoQ AI",
type="rss",
url="https://feed.example/rss",
max_item_age_days=3,
)
xml = """
-
No date item
https://example.com/no-date
No date summary
not a date
"""
items = parse_rss_items(config, xml, run_date="2026-06-08")
self.assertEqual([item["title_raw"] for item in items], ["No date item"])
if __name__ == "__main__":
unittest.main()