Add conditional caching and opt-in import scheduler
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime, timedelta, timezone
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.config import settings
|
||||
from app.database import Base
|
||||
from app.models import ImportStatus, OfficialRecordImport
|
||||
from app.scheduler import import_is_due
|
||||
|
||||
|
||||
def test_import_is_due_respects_minimum_interval() -> None:
|
||||
engine = create_engine("sqlite://")
|
||||
Base.metadata.create_all(engine)
|
||||
now = datetime.now(timezone.utc)
|
||||
with Session(engine) as db:
|
||||
assert import_is_due(db, now=now) is True
|
||||
db.add(OfficialRecordImport(
|
||||
started_at=now - timedelta(seconds=settings.import_interval_seconds - 1),
|
||||
finished_at=now,
|
||||
status=ImportStatus.success,
|
||||
source_url=settings.official_records_url,
|
||||
rows_seen=0,
|
||||
rows_created=0,
|
||||
rows_updated=0,
|
||||
))
|
||||
db.commit()
|
||||
assert import_is_due(db, now=now) is False
|
||||
assert import_is_due(db, now=now + timedelta(seconds=settings.import_interval_seconds)) is True
|
||||
Reference in New Issue
Block a user