ariadne/tests/test_storage.py

51 lines
1.3 KiB
Python

from __future__ import annotations
from datetime import datetime
from ariadne.db.storage import Storage
class DummyDB:
def __init__(self) -> None:
self.rows = []
def fetchall(self, query, params=None):
return self.rows
def fetchone(self, query, params=None):
return None
def execute(self, query, params=None):
return None
def test_task_statuses_and_complete() -> None:
db = DummyDB()
db.rows = [{"task": "one", "status": "ok"}, {"task": "two", "status": "error"}]
storage = Storage(db)
statuses = storage.task_statuses("req")
assert statuses == {"one": "ok", "two": "error"}
assert storage.tasks_complete("req", ["one"]) is True
assert storage.tasks_complete("req", ["one", "two"]) is False
def test_row_to_request_flags() -> None:
row = {
"request_code": "abc",
"username": "alice",
"contact_email": "a@example.com",
"status": "pending",
"email_verified_at": None,
"initial_password": None,
"initial_password_revealed_at": None,
"provision_attempted_at": None,
"approval_flags": ["demo", 1, "test"],
"approval_note": "note",
"denial_note": None,
}
req = Storage._row_to_request(row)
assert req.request_code == "abc"
assert req.approval_flags == ["demo", "1", "test"]