47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
import pytest
|
|
|
|
from src.repositories import approval_repository as repo_mod
|
|
|
|
|
|
class _FakeScalars:
|
|
def all(self) -> list:
|
|
return []
|
|
|
|
|
|
class _FakeResult:
|
|
def scalars(self) -> _FakeScalars:
|
|
return _FakeScalars()
|
|
|
|
|
|
class _FakeDb:
|
|
def __init__(self) -> None:
|
|
self.statements = []
|
|
|
|
async def execute(self, statement):
|
|
self.statements.append(statement)
|
|
return _FakeResult()
|
|
|
|
|
|
class _FakeDbContext:
|
|
def __init__(self, db: _FakeDb) -> None:
|
|
self.db = db
|
|
|
|
async def __aenter__(self) -> _FakeDb:
|
|
return self.db
|
|
|
|
async def __aexit__(self, exc_type, exc, tb) -> bool:
|
|
return False
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_repository_get_pending_expires_old_pending_before_select(monkeypatch) -> None:
|
|
fake_db = _FakeDb()
|
|
monkeypatch.setattr(repo_mod, "get_db_context", lambda: _FakeDbContext(fake_db))
|
|
|
|
pending = await repo_mod.ApprovalDBRepository().get_pending()
|
|
|
|
assert pending == []
|
|
assert len(fake_db.statements) == 2
|
|
assert fake_db.statements[0].__class__.__name__ == "Update"
|
|
assert fake_db.statements[1].__class__.__name__ == "Select"
|