This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user