import unittest from pathlib import Path from radioeins_top100 import POINTS, derive_output_dir, parse_jury_page class RadioeinsTop100Tests(unittest.TestCase): def test_output_directory_is_derived_from_url_path(self): base = "https://www.radioeins.de/musik/top_100/2026" self.assertEqual(derive_output_dir(f"{base}/zeit/"), Path("output_zeit")) self.assertEqual( derive_output_dir(f"{base}/deutscher-hip-hop"), Path("output_deutscher-hip-hop"), ) def test_point_mapping(self): self.assertEqual( [POINTS[rank] for rank in range(1, 11)], [12, 10, 8, 7, 6, 5, 4, 3, 2, 1], ) def test_parse_existing_jury_fixture(self): fixture = Path(__file__).parent / "fixtures" / "aditya-sharma.html" votes = parse_jury_page( fixture.read_text(encoding="utf-8"), fallback_name="Fallback", source_url="https://example.test/aditya-sharma.html", ) self.assertEqual(len(votes), 10) self.assertEqual(votes[0].juror, "Aditya Sharma") self.assertEqual((votes[0].rank, votes[0].points), (1, 12)) self.assertEqual((votes[1].artist, votes[1].title), ("Samy Deluxe", "Weck Mich Auf")) self.assertEqual((votes[-1].rank, votes[-1].points), (10, 1)) if __name__ == "__main__": unittest.main()