from datetime import datetime, timezone from pathlib import Path import tempfile import unittest from parley.persistence import save_transcript class PersistenceTests(unittest.TestCase): def setUp(self) -> None: self.temporary = tempfile.TemporaryDirectory() root = Path(self.temporary.name) self.directory = root / "transcripts" self.recording = root / "recording.wav" self.recording.write_bytes(b"RIFF audio") self.now = datetime(2026, 7, 24, 12, 34, 56, 123456, timezone.utc) def tearDown(self) -> None: self.temporary.cleanup() def save(self, text: str = "text") -> Path: return save_transcript( text, self.recording, self.directory, clock=lambda: self.now, ) def test_saves_text_and_audio_under_date_and_time(self) -> None: path = self.save("héllo\n\n") self.assertEqual(path, self.directory / "2026-07-24" / "12-34-56.txt") self.assertEqual(path.read_text(encoding="utf-8"), "héllo\n") self.assertEqual(path.with_suffix(".wav").read_bytes(), b"RIFF audio") def test_refuses_to_replace_an_existing_pair(self) -> None: first = self.save("one") with self.assertRaises(FileExistsError): self.save("two") self.assertEqual(first.read_text(), "one\n") self.assertEqual(first.with_suffix(".wav").read_bytes(), b"RIFF audio") def test_leaves_no_temporary_files(self) -> None: path = self.save() self.assertFalse(any(item.suffix == ".tmp" for item in path.parent.iterdir())) if __name__ == "__main__": unittest.main()