"""Tests für die Media-Server-Aufbereitung (Benennung + NFO).""" import os from medien import baue_nfo, sicherer_name, zielordner def test_sicherer_name_entfernt_verbotene_zeichen(): assert sicherer_name('Alien: Die Wiedergeburt') == "Alien Die Wiedergeburt" assert sicherer_name('Was/ist\\das?<>|*"') == "Wasistdas" def test_sicherer_name_mit_jahr(): assert sicherer_name("Evangelion 2.22", 2009) == "Evangelion 2.22 (2009)" def test_sicherer_name_kollabiert_leerraum_und_punkte(): assert sicherer_name(" Viel Raum ... ") == "Viel Raum" def test_sicherer_name_leer_bleibt_leer(): assert sicherer_name("") == "" assert sicherer_name("???") == "" def test_zielordner_nutzt_titel_und_jahr(tmp_path): pfad = zielordner(str(tmp_path), "Inception", 2010, "abc-123") assert pfad == os.path.join(str(tmp_path), "Inception (2010)") def test_zielordner_faellt_auf_job_id_zurueck(tmp_path): pfad = zielordner(str(tmp_path), "", None, "abc-123") assert pfad == os.path.join(str(tmp_path), "abc-123") def test_zielordner_weicht_bei_kollision_aus(tmp_path): os.makedirs(tmp_path / "Inception (2010)") pfad = zielordner(str(tmp_path), "Inception", 2010, "abcdef12-3456") assert pfad == os.path.join(str(tmp_path), "Inception (2010) [abcdef12]") def test_baue_nfo_film_mit_plot_und_genres(): nfo = baue_nfo( {"overview": "Ein Traum Traum & so", "genres": ["Sci-Fi", "Action"]}, "Inception", 2010, ) assert "" in nfo and "" in nfo assert "Inception" in nfo assert "2010" in nfo # XML-Escaping: <, >, & dürfen den Parser nicht sprengen assert "Ein Traum <im> Traum & so" in nfo assert "Sci-Fi" in nfo def test_baue_nfo_serie_bekommt_tvshow_wurzel(): nfo = baue_nfo({"type": "tv"}, "Neon Genesis Evangelion", 1995) assert "" in nfo and "" in nfo