from app.config import Settings from app.scheduler import generate_daily_summaries, generate_weekly_summaries, start_scheduler def _settings(**llm): return Settings.model_validate({"alerts": {"email": {"enabled": False}}, "llm": llm}) def test_disabled_digest_jobs_do_not_instantiate_llm(monkeypatch): def fail_llm(*args, **kwargs): raise AssertionError("LLM should not be constructed when summaries are disabled") monkeypatch.setattr("app.scheduler.LLMClient", fail_llm) settings = _settings(generate_daily_summary=False, generate_weekly_summary=False) assert generate_daily_summaries(settings) == [] assert generate_weekly_summaries(settings) == [] def test_scheduler_only_registers_enabled_digest_jobs(monkeypatch): created = [] class FakeScheduler: running = True def __init__(self, timezone): self.timezone = timezone self.jobs = [] created.append(self) def add_job(self, func, trigger, **kwargs): self.jobs.append(kwargs["id"]) def start(self): pass monkeypatch.setattr("app.scheduler.BackgroundScheduler", FakeScheduler) scheduler = start_scheduler(_settings(generate_daily_summary=False, generate_weekly_summary=True)) assert scheduler.jobs == ["poll", "weekly"]