75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
from uuid import uuid4
|
|
|
|
from _pytest.fixtures import SubRequest
|
|
from pytest import fixture
|
|
from sqlalchemy import delete
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from fastfood_two.infrastructure.pg_storage.models import SQLAMenu
|
|
|
|
|
|
def generate_str():
|
|
return str(uuid4())
|
|
|
|
|
|
@fixture
|
|
async def menu(request: SubRequest, test_session: AsyncSession):
|
|
if request.param is not None:
|
|
id = uuid4()
|
|
title = "test_menu"
|
|
description = None
|
|
|
|
match len(request.param):
|
|
case 2:
|
|
need_create, need_delete = request.param
|
|
if not isinstance(need_create, bool):
|
|
raise ValueError
|
|
if not isinstance(need_delete, bool):
|
|
raise ValueError
|
|
case 3:
|
|
need_create, need_delete, title = request.param
|
|
if not isinstance(need_create, bool):
|
|
raise ValueError
|
|
if not isinstance(need_delete, bool):
|
|
raise ValueError
|
|
if not isinstance(title, str | bool):
|
|
raise ValueError
|
|
|
|
if isinstance(title, bool):
|
|
title = "test_menu" if not title else generate_str
|
|
case 4:
|
|
need_create, need_delete, title, description = request.param
|
|
if not isinstance(need_create, bool):
|
|
raise ValueError
|
|
if not isinstance(need_delete, bool):
|
|
raise ValueError
|
|
if not isinstance(title, str | bool):
|
|
raise ValueError
|
|
if not isinstance(description, str | bool | None):
|
|
raise ValueError
|
|
|
|
if isinstance(title, bool):
|
|
title = "test_menu" if not title else generate_str
|
|
|
|
if isinstance(description, bool):
|
|
description = "test_desc" if not description else generate_str
|
|
|
|
case _:
|
|
raise ValueError
|
|
|
|
menu = SQLAMenu(id=id, title=title, description=description)
|
|
|
|
if need_create is True:
|
|
test_session.add(menu)
|
|
await test_session.commit()
|
|
|
|
yield menu
|
|
|
|
if need_delete is True:
|
|
stmt = delete(SQLAMenu).where(SQLAMenu.id == menu.id)
|
|
await test_session.execute(stmt)
|
|
await test_session.commit()
|
|
|
|
else:
|
|
raise ValueError
|