honcho/tests/reconciler/test_queue_cleanup.py

33 lines
969 B
Python

from contextlib import asynccontextmanager
from unittest.mock import AsyncMock
import pytest
from src import models
from src.reconciler import queue_cleanup
@pytest.mark.asyncio
async def test_cleanup_queue_items_executes_delete_and_commit(
monkeypatch: pytest.MonkeyPatch,
) -> None:
fake_db = AsyncMock()
called_operation_names: list[str | None] = []
@asynccontextmanager
async def fake_tracked_db(operation_name: str | None = None):
called_operation_names.append(operation_name)
yield fake_db
monkeypatch.setattr(queue_cleanup, "tracked_db", fake_tracked_db)
await queue_cleanup.cleanup_queue_items()
assert called_operation_names == ["cleanup_queue_items"]
fake_db.execute.assert_awaited_once()
fake_db.commit.assert_awaited_once()
delete_stmt = fake_db.execute.await_args.args[0]
assert delete_stmt.table.name == models.QueueItem.__tablename__
assert delete_stmt.whereclause is not None