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-30 23:11:40 +03:00
|
|
|
|
menu = Menu(title="SomeMenu", description="SomeDescription")
|
2024-01-29 02:19:02 +03:00
|
|
|
|
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(
|
2024-01-30 23:11:40 +03:00
|
|
|
|
menu_id,
|
|
|
|
|
submenu.id,
|
|
|
|
|
asession,
|
2024-01-29 22:22:36 +03:00
|
|
|
|
)
|
|
|
|
|
assert submenu == req_submenu
|
|
|
|
|
|
|
|
|
|
# Обновляем меню
|
|
|
|
|
submenu.title = "UpdatedSubmenu"
|
|
|
|
|
req_submenu = await SubMenuCrud.update_submenu_item(
|
2024-01-30 23:11:40 +03:00
|
|
|
|
submenu_id,
|
|
|
|
|
menubaseschema.model_validate(submenu),
|
|
|
|
|
asession,
|
2024-01-29 22:22:36 +03:00
|
|
|
|
)
|
|
|
|
|
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
|