lazier

personal summarizer
Log | Files | Refs | README

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