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"]