This commit is contained in:
2024-01-29 02:19:02 +03:00
parent cae407a5f4
commit bab8008ec8
9 changed files with 344 additions and 73 deletions

View File

@@ -39,7 +39,7 @@ async def db_init():
async with async_engine.begin() as conn:
await conn.run_sync(Base.metadata.drop_all)
async def get_test_session() -> AsyncGenerator[AsyncSession, None]:
async with async_session_maker() as session:
yield session
@@ -58,3 +58,9 @@ async def client(app):
app=app, base_url="http://localhost:8000/api/v1/menus",
) as async_client:
yield async_client
@pytest_asyncio.fixture(scope="session")
async def asession() -> AsyncGenerator[AsyncSession, None]:
async with async_session_maker() as session:
yield session

View File

@@ -87,7 +87,8 @@ class TestBaseCrud:
async def get(ac, menu, submenu, dish):
"""Получение блюда по id"""
response = await ac.get(
f"/{menu.get('id')}/submenus/{submenu.get('id')}/dishes/{dish.get('id')}",
f"/{menu.get('id')}/submenus/{submenu.get('id')}"
f"/dishes/{dish.get('id')}",
)
return response.status_code, response.json()
@@ -104,7 +105,8 @@ class TestBaseCrud:
async def update(ac, menu, submenu, dish):
"""Обновление блюда по id"""
response = await ac.patch(
f"/{menu.get('id')}/submenus/{submenu.get('id')}/dishes/{dish.get('id')}",
f"/{menu.get('id')}/submenus/{submenu.get('id')}"
f"/dishes/{dish.get('id')}",
json=dish,
)
return response.status_code, response.json()
@@ -113,7 +115,8 @@ class TestBaseCrud:
async def delete(ac, menu, submenu, dish):
"""Удаление блюда по id"""
response = await ac.delete(
f"/{menu.get('id')}/submenus/{submenu.get('id')}/dishes/{dish.get('id')}"
f"/{menu.get('id')}/submenus/{submenu.get('id')}"
f"/dishes/{dish.get('id')}"
)
return response.status_code
@@ -369,7 +372,7 @@ class TestСontinuity:
assert rspn["submenus_count"] == 0
assert "dishes_count" in rspn.keys()
assert rspn["dishes_count"] == 0
# Удаляем меню
code = await TestBaseCrud.Menu.delete(client, menu)
assert code == 200

56
tests/test_crud.py Normal file
View File

@@ -0,0 +1,56 @@
from uuid import UUID
from sqlalchemy.ext.asyncio import AsyncSession
from fastfood.cruds.submenu import SubMenuCrud
from fastfood.models import Menu, SubMenu, Dish
from fastfood.cruds.menu import MenuCrud
from fastfood.schemas import Menu as menuschema
from fastfood.schemas import SubMenuRead as submenuschema
from fastfood.schemas import MenuBase as menubaseschema
import pytest
@pytest.mark.asyncio
async def test_menu(asession: AsyncSession) -> None:
async with asession:
menu: Menu = Menu(title="SomeMenu", description="SomeDescription")
asession.add(menu)
await asession.commit()
await asession.refresh(menu)
menu_id: UUID = menu.id
req_menu: Menu | None = await MenuCrud.get_menu_item(menu_id, asession)
assert menu == req_menu
req_menus = await MenuCrud.get_menus(asession)
# assert menu == req_menus.first()
menu.title = "updatedMenu"
await MenuCrud.update_menu_item(
menu.id, menuschema.model_validate(menu), asession
)
req_menu = await MenuCrud.get_menu_item(menu_id, asession)
assert menu == req_menu
await MenuCrud.delete_menu_item(menu_id, asession)
req_menus = await MenuCrud.get_menus(asession)
assert req_menus.all() == []
@pytest.mark.asyncio
async def test_submenu(asession: AsyncSession) -> None:
async with asession:
menu: Menu = Menu(title="SomeMenu", description="SomeDescription")
asession.add(menu)
await asession.commit()
await asession.refresh(menu)
menu_id: UUID = menu.id
submenu: SubMenu = SubMenu(
title="submenu", description="", parent_menu=menu_id,
)
submenu = await SubMenuCrud.create_submenu_item(
menu_id, menubaseschema.model_validate(submenu), asession,
)
print(submenu)