Files
dengwenhao 99e42f8be4
Deploy TodoList / deploy (push) Successful in 4s
style: format Python files with Ruff
2026-07-31 10:26:51 +08:00

50 lines
1.2 KiB
Python

from sqlalchemy.exc import SQLAlchemyError
from models import Todo
class FakeScalarResult:
def __init__(self, todos: list[Todo]) -> None:
self.todos = todos
def all(self) -> list[Todo]:
return self.todos
class FakeSession:
def __init__(self) -> None:
self.todo_to_return: Todo | None = None
self.added_todo: Todo | None = None
self.committed = False
self.deleted_todo: Todo | None = None
self.should_fail_commit = False
self.rolled_back = False
self.todos_to_return: list[Todo] = []
def add(self, todo: Todo) -> None:
self.added_todo = todo
todo.id = 1
todo.completion = False
def commit(self) -> None:
if self.should_fail_commit:
raise SQLAlchemyError("simulated commit failure")
self.committed = True
def get(
self,
_model: type[Todo],
_todo_id: int,
) -> Todo | None:
return self.todo_to_return
def delete(self, todo: Todo) -> None:
self.deleted_todo = todo
def rollback(self) -> None:
self.rolled_back = True
def scalars(self, _statement: object) -> FakeScalarResult:
return FakeScalarResult(self.todos_to_return)