Files
linkedstorm/tests/test_cron.py
T
2026-05-28 10:49:24 -05:00

72 lines
2.4 KiB
Python

import pytest
import os
from datetime import datetime, timezone
from pathlib import Path
from unittest.mock import MagicMock
def _seed_utterances(db, room_id, count=3):
for i in range(count):
db.execute(
"INSERT INTO utterances (room_id, transcript, match_status, start_time, end_time) VALUES (?,?,?,?,?)",
(room_id, f"utterance {i}", "unknown",
"2026-05-27 10:00:00", "2026-05-27 10:00:03"),
)
db.commit()
def test_daily_summary_inserts_row(mocker, settings, db):
db.execute("INSERT INTO rooms (name) VALUES (?)", ("Kitchen",))
db.commit()
room = db.execute("SELECT id FROM rooms WHERE name='Kitchen'").fetchone()
_seed_utterances(db, room["id"])
mock_post = mocker.patch("app.cron.daily_summary.httpx.post")
mock_post.return_value.json.return_value = {"message": {"content": "Busy day."}}
mock_post.return_value.raise_for_status = MagicMock()
from app.cron.daily_summary import generate_daily_summary
generate_daily_summary("2026-05-27", settings, db)
row = db.execute("SELECT * FROM daily_summaries WHERE date='2026-05-27'").fetchone()
assert row is not None
assert row["summary_text"] == "Busy day."
def test_daily_summary_skips_if_no_utterances(mocker, settings, db):
mock_post = mocker.patch("app.cron.daily_summary.httpx.post")
from app.cron.daily_summary import generate_daily_summary
generate_daily_summary("2026-05-27", settings, db)
mock_post.assert_not_called()
def test_purge_clips_deletes_old_files(settings, db, tmp_path):
from app.cron.purge_clips import purge_old_clips
clips_dir = tmp_path / "clips"
old_dir = clips_dir / "2026-04-01"
old_dir.mkdir(parents=True)
old_file = old_dir / "1.wav"
old_file.write_bytes(b"\x00" * 100)
new_dir = clips_dir / "2026-05-27"
new_dir.mkdir(parents=True)
new_file = new_dir / "2.wav"
new_file.write_bytes(b"\x00" * 100)
# Create a settings with clips_dir pointing to tmp
from app.shared.config import Settings
settings_override = Settings(
db_path=settings.db_path,
clips_dir=str(clips_dir),
clip_retention_days=30,
speaches_url=settings.speaches_url,
ollama_url=settings.ollama_url,
livekit_api_key=settings.livekit_api_key,
livekit_api_secret=settings.livekit_api_secret,
)
purge_old_clips("2026-05-28", settings_override, db)
assert not old_file.exists()
assert new_file.exists()