33 lines
969 B
Python
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
|