test_export_filenames.py (2215B)
1 import os 2 import unittest 3 from pathlib import Path 4 5 from lazier.utils import ( 6 build_export_filename, 7 resolve_export_title, 8 sanitize_filename, 9 ) 10 11 12 class ExportFilenameTests(unittest.TestCase): 13 def setUp(self): 14 self.temp_dir = Path(os.getcwd()) / ".tmp-tests" / "export-filenames" 15 self.temp_dir.mkdir(parents=True, exist_ok=True) 16 17 def tearDown(self): 18 for f in self.temp_dir.glob("*"): 19 f.unlink(missing_ok=True) 20 21 def test_resolve_title_from_metadata(self): 22 title = resolve_export_title({"title": "Meu Video Legal"}, source_name="https://youtube.com/watch?v=x") 23 self.assertEqual(title, "Meu Video Legal") 24 25 def test_resolve_title_from_source_name_when_no_metadata_title(self): 26 title = resolve_export_title({}, source_name="palestra.mp3") 27 self.assertEqual(title, "palestra") 28 29 def test_video_title_becomes_docx_filename(self): 30 name = build_export_filename( 31 {"title": "Meu Video"}, 32 "docx", 33 source_name="https://youtube.com/watch?v=abc", 34 ) 35 self.assertEqual(name, f"{sanitize_filename('Meu Video')}.docx") 36 37 def test_dual_artifacts_use_transcricao_and_sumario_suffixes(self): 38 meta = {"title": "Palestra IA"} 39 tx = build_export_filename(meta, "docx", artifact_kind="transcription") 40 sm = build_export_filename(meta, "docx", artifact_kind="summary") 41 self.assertTrue(tx.endswith(" - transcricao.docx")) 42 self.assertTrue(sm.endswith(" - sumario.docx")) 43 self.assertNotEqual(tx, sm) 44 45 def test_collision_appends_numeric_suffix(self): 46 meta = {"title": "Duplicado"} 47 first = build_export_filename(meta, "txt", output_dir=self.temp_dir) 48 (self.temp_dir / first).write_text("x", encoding="utf-8") 49 second = build_export_filename(meta, "txt", output_dir=self.temp_dir) 50 self.assertEqual(second, f"{sanitize_filename('Duplicado')}-2.txt") 51 52 def test_no_title_falls_back_to_lazier_pattern(self): 53 name = build_export_filename({}, "docx", source_name="https://example.com/v") 54 self.assertRegex(name, r"^lazier_\d{6}\.docx$") 55 56 57 if __name__ == "__main__": 58 unittest.main()