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()