feat: APScheduler manager with fetch interval and auto-publish

Made-with: Cursor
This commit is contained in:
cottongin
2026-04-06 15:18:37 -04:00
parent 01f8366e85
commit 50ff2e1533
2 changed files with 209 additions and 0 deletions

55
tests/test_scheduler.py Normal file
View File

@@ -0,0 +1,55 @@
from src.scheduler import SchedulerManager
def test_scheduler_starts_fetch_job(app):
with app.app_context():
mgr = SchedulerManager(app)
mgr.start()
jobs = mgr.scheduler.get_jobs()
job_ids = [j.id for j in jobs]
assert "rss_fetch" in job_ids
mgr.shutdown()
def test_scheduler_update_fetch_interval(app):
with app.app_context():
mgr = SchedulerManager(app)
mgr.start()
mgr.update_fetch_interval(2)
job = mgr.scheduler.get_job("rss_fetch")
assert job is not None
assert job.trigger.interval.total_seconds() == 7200
mgr.shutdown()
def test_scheduler_enable_auto_publish(app):
with app.app_context():
mgr = SchedulerManager(app)
mgr.start()
mgr.enable_auto_publish(day_of_week="sun", hour=6, minute=0,
cover_method="text")
job = mgr.scheduler.get_job("auto_publish")
assert job is not None
mgr.shutdown()
def test_scheduler_disable_auto_publish(app):
with app.app_context():
mgr = SchedulerManager(app)
mgr.start()
mgr.enable_auto_publish(day_of_week="sun", hour=6, minute=0,
cover_method="text")
mgr.disable_auto_publish()
job = mgr.scheduler.get_job("auto_publish")
assert job is None
mgr.shutdown()
def test_scheduler_get_status(app):
with app.app_context():
mgr = SchedulerManager(app)
mgr.start()
status = mgr.get_status()
assert status["running"] is True
assert "rss_fetch" in status
mgr.shutdown()