fastfood/tests/test_crud.py

101 lines
3.2 KiB
Python
Raw Normal View History

2024-01-29 02:19:02 +03:00
from uuid import UUID
2024-01-29 12:34:11 +03:00
import pytest
2024-01-29 02:19:02 +03:00
from sqlalchemy.ext.asyncio import AsyncSession
2024-01-29 12:34:11 +03:00
2024-01-29 02:19:02 +03:00
from fastfood.cruds.menu import MenuCrud
2024-01-29 12:34:11 +03:00
from fastfood.cruds.submenu import SubMenuCrud
2024-01-29 22:22:36 +03:00
from fastfood.models import Menu, SubMenu
2024-01-29 02:19:02 +03:00
from fastfood.schemas import Menu as menuschema
from fastfood.schemas import MenuBase as menubaseschema
@pytest.mark.asyncio
async def test_menu(asession: AsyncSession) -> None:
async with asession:
2024-01-29 22:22:36 +03:00
# Создаем меню
2024-01-29 02:19:02 +03:00
menu: Menu = Menu(title="SomeMenu", description="SomeDescription")
2024-01-29 20:11:39 +03:00
menu: Menu = await MenuCrud.create_menu_item(
menubaseschema.model_validate(menu),
asession,
)
2024-01-29 02:19:02 +03:00
menu_id: UUID = menu.id
2024-01-29 22:22:36 +03:00
# Получаем его же
2024-01-29 02:19:02 +03:00
req_menu: Menu | None = await MenuCrud.get_menu_item(menu_id, asession)
assert menu == req_menu
2024-01-29 22:22:36 +03:00
# Получаем все меню и проверяем
2024-01-29 02:19:02 +03:00
req_menus = await MenuCrud.get_menus(asession)
2024-01-29 20:11:39 +03:00
assert menu == req_menus.scalars().all()[0]
2024-01-29 02:19:02 +03:00
2024-01-29 22:22:36 +03:00
# Обновляем
2024-01-29 02:19:02 +03:00
menu.title = "updatedMenu"
await MenuCrud.update_menu_item(
menu.id, menuschema.model_validate(menu), asession
)
2024-01-29 22:22:36 +03:00
# И сверяем
2024-01-29 02:19:02 +03:00
req_menu = await MenuCrud.get_menu_item(menu_id, asession)
assert menu == req_menu
2024-01-29 22:22:36 +03:00
# Удаляем и проверяем
2024-01-29 02:19:02 +03:00
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:
2024-01-29 20:11:39 +03:00
# Создаем меню напрямую
2024-01-29 02:19:02 +03:00
menu: Menu = Menu(title="SomeMenu", description="SomeDescription")
asession.add(menu)
await asession.commit()
await asession.refresh(menu)
menu_id: UUID = menu.id
2024-01-29 20:11:39 +03:00
2024-01-29 22:22:36 +03:00
# Создаем подменю
2024-01-29 02:19:02 +03:00
submenu: SubMenu = SubMenu(
2024-01-29 12:34:11 +03:00
title="submenu",
description="",
parent_menu=menu_id,
2024-01-29 02:19:02 +03:00
)
submenu = await SubMenuCrud.create_submenu_item(
2024-01-29 12:34:11 +03:00
menu_id,
menubaseschema.model_validate(submenu),
asession,
2024-01-29 02:19:02 +03:00
)
2024-01-29 22:22:36 +03:00
submenu_id = submenu.id
# Проверяем подменю
req_submenu = await SubMenuCrud.get_submenu_item(
menu_id, submenu.id, asession,
)
assert submenu == req_submenu
# Обновляем меню
submenu.title = "UpdatedSubmenu"
req_submenu = await SubMenuCrud.update_submenu_item(
submenu_id, menubaseschema.model_validate(submenu), asession,
)
assert submenu == req_submenu.scalar_one_or_none()
menu = await MenuCrud.get_menu_item(menu_id, asession)
assert 1 == menu.submenus_count
# Удаляем полменю
await SubMenuCrud.delete_submenu_item(submenu_id, asession)
menu = await MenuCrud.get_menu_item(menu_id, asession)
assert 0 == menu.submenus_count
await MenuCrud.delete_menu_item(menu_id, asession)
2024-01-29 20:11:39 +03:00
2024-01-29 22:22:36 +03:00
@pytest.mark.skip
2024-01-29 20:11:39 +03:00
@pytest.mark.asyncio
async def test_dish(asession: AsyncSession):
2024-01-29 22:22:36 +03:00
"""Not Implemented yet"""
2024-01-29 20:11:39 +03:00
async with asession:
pass