import unittest from ai_daily_report.models import SourceConfig from ai_daily_report.sources.juya import parse_juya_rss from ai_daily_report.sources.labels import source_label_from_url class SourceLabelTests(unittest.TestCase): def test_source_label_from_x_url_includes_handle(self): self.assertEqual( source_label_from_url("https://x.com/MiniMax_AI/status/123", fallback="橘鸦AI早报"), "X:MiniMax (@MiniMax_AI)", ) def test_source_label_from_blog_url_marks_blog(self): self.assertEqual( source_label_from_url("https://openai.com/blog/example", fallback="橘鸦AI早报"), "OpenAI:Blog", ) def test_source_label_from_known_non_blog_domains(self): self.assertEqual( source_label_from_url("https://mp.weixin.qq.com/s/example", fallback="橘鸦AI早报"), "微信公众号", ) self.assertEqual( source_label_from_url("https://platform.minimaxi.com/docs/token-plan/migration", fallback="橘鸦AI早报"), "MiniMax:Docs", ) def test_parse_juya_rss_uses_item_url_as_source_label(self): config = SourceConfig(name="橘鸦AI早报", type="juya_rss", url="https://juya.example/rss") xml = """ 2026-06-04 MiniMax M3 加速 #1

MiniMax M3 加速。

来源


]]>
""" items = parse_juya_rss(config, xml, "2026-06-04") self.assertEqual(items[0]["source_label"], "X:MiniMax (@MiniMax_AI)") self.assertNotEqual(items[0]["source_label"], "橘鸦AI早报") if __name__ == "__main__": unittest.main()