lazier

personal summarizer
Log | Files | Refs | README

test_jobs.py (2341B)


      1 import os
      2 import shutil
      3 import unittest
      4 import uuid
      5 from datetime import datetime
      6 from pathlib import Path
      7 
      8 from lazier.core.jobs import JobStore, build_job_artifact_path, build_job_output_dir
      9 
     10 
     11 class JobStoreTests(unittest.TestCase):
     12     def setUp(self):
     13         self.temp_dir = Path(os.getcwd()) / ".tmp-tests" / f"jobs-{uuid.uuid4().hex[:8]}"
     14         self.temp_dir.mkdir(parents=True, exist_ok=True)
     15         os.environ["LAZIER_DATA_DIR"] = str(self.temp_dir)
     16         os.environ["LAZIER_OUTPUT_DIR"] = str(self.temp_dir)
     17         self.store = JobStore(self.temp_dir / "jobs.db")
     18 
     19     def tearDown(self):
     20         shutil.rmtree(self.temp_dir, ignore_errors=True)
     21 
     22     def test_persists_and_marks_incomplete_jobs_as_interrupted(self):
     23         self.store.create_job(
     24             {
     25                 "id": "job-1",
     26                 "mode": "transcribe",
     27                 "status": "processing",
     28                 "progress": 42,
     29                 "format": "txt",
     30                 "source_name": "arquivo.mp3",
     31                 "created_at": "2026-03-31T12:00:00",
     32             }
     33         )
     34 
     35         interrupted = self.store.mark_incomplete_as_interrupted()
     36         job = self.store.get_job("job-1")
     37 
     38         self.assertEqual(interrupted, 1)
     39         self.assertEqual(job["status"], "interrupted")
     40         self.assertEqual(job["progress"], 42)
     41         self.assertIn("reinicializacao", job["error"])
     42 
     43     def test_builds_output_paths_with_date_job_and_expected_names(self):
     44         created_at = datetime(2026, 3, 31, 15, 45, 0)
     45         output_dir = build_job_output_dir(
     46             job_id="abc12345-xyz",
     47             source_name="Minha Reunião.mp3",
     48             created_at=created_at,
     49             output_root=self.temp_dir,
     50         )
     51         summary_path = build_job_artifact_path(
     52             job_id="abc12345-xyz",
     53             source_name="Minha Reunião.mp3",
     54             format_type="txt",
     55             artifact_kind="summary",
     56             created_at=created_at,
     57             output_root=self.temp_dir,
     58             metadata={"title": "Minha Reunião"},
     59         )
     60 
     61         self.assertIn("2026", str(output_dir))
     62         self.assertIn("03", str(output_dir))
     63         self.assertIn("31", str(output_dir))
     64         self.assertTrue(output_dir.name.startswith("minha-reuniao-abc12345"))
     65         self.assertEqual(summary_path.name, "Minha Reunião - sumario.txt")