sinc
This commit is contained in:
@@ -53,16 +53,10 @@ def app(event_loop) -> Generator[FastAPI, None, None]:
|
||||
yield app
|
||||
|
||||
|
||||
@pytest_asyncio.fixture(scope="function")
|
||||
@pytest_asyncio.fixture()
|
||||
async def client(app) -> AsyncGenerator[AsyncClient, None]:
|
||||
async with AsyncClient(
|
||||
app=app,
|
||||
base_url="http://localhost:8000/api/v1/menus",
|
||||
) as async_client:
|
||||
yield async_client
|
||||
|
||||
|
||||
@pytest_asyncio.fixture(scope="function")
|
||||
async def asession(event_loop) -> AsyncGenerator[AsyncSession, None]:
|
||||
async with async_session_maker() as session:
|
||||
yield session
|
||||
|
@@ -7,9 +7,10 @@ from httpx import AsyncClient, Response
|
||||
class TestBaseCrud:
|
||||
class Menu:
|
||||
@staticmethod
|
||||
async def read_all(ac: AsyncClient) -> Tuple[int, dict]:
|
||||
async def read_all(cli: AsyncClient) -> Tuple[int, dict]:
|
||||
"""чтение всех меню"""
|
||||
response: Response = await ac.get("/")
|
||||
|
||||
response: Response = await cli.get("/")
|
||||
return response.status_code, response.json()
|
||||
|
||||
@staticmethod
|
||||
@@ -144,264 +145,269 @@ class TestBaseCrud:
|
||||
)
|
||||
return response.status_code
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_menu_crud(self, client: AsyncClient) -> None:
|
||||
"""Тестирование функций меню"""
|
||||
code, rspn = await self.Menu.read_all(client)
|
||||
assert code == 200
|
||||
|
||||
data = {"title": "Menu", "description": None}
|
||||
code, rspn = await self.Menu.write(client, data)
|
||||
assert code == 201
|
||||
assert rspn["title"] == "Menu"
|
||||
assert rspn["description"] is None
|
||||
@pytest.mark.asyncio
|
||||
async def test_menu_crud(client) -> None:
|
||||
"""Тестирование функций меню"""
|
||||
code, rspn = await TestBaseCrud.Menu.read_all(client)
|
||||
assert code == 200
|
||||
|
||||
code, menu = await self.Menu.get(client, {"id": rspn.get("id")})
|
||||
assert code == 200
|
||||
assert menu["title"] == rspn["title"]
|
||||
|
||||
upd_data = {
|
||||
"id": rspn.get("id"),
|
||||
"title": "upd Menu",
|
||||
"description": "",
|
||||
}
|
||||
code, upd_rspn = await self.Menu.update(client, upd_data)
|
||||
assert code == 200
|
||||
assert upd_rspn["title"] == "upd Menu"
|
||||
|
||||
code = await self.Menu.delete(client, rspn)
|
||||
assert code == 200
|
||||
|
||||
code, menu = await self.Menu.get(client, {"id": rspn.get("id")})
|
||||
assert code == 404
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_submenus(self, client) -> None:
|
||||
# Создаем меню и проверяем ответ
|
||||
menu = {"title": "Menu", "description": "main menu"}
|
||||
code, rspn = await self.Menu.write(client, menu)
|
||||
assert code == 201
|
||||
menu.update(rspn)
|
||||
|
||||
# Проверяем наличие подменю
|
||||
code, rspn = await self.Submenu.read_all(client, menu)
|
||||
assert code == 200
|
||||
assert rspn == []
|
||||
|
||||
# Создаем и проверяем подменю
|
||||
submenu = {
|
||||
"title": "Submenu",
|
||||
"description": "submenu",
|
||||
"parent_menu": menu["id"],
|
||||
}
|
||||
code, rspn = await self.Submenu.write(client, menu, submenu)
|
||||
assert code == 201
|
||||
submenu.update(rspn)
|
||||
|
||||
# Проверяем меню на наличие подменю
|
||||
code, rspn = await self.Menu.get(client, menu)
|
||||
assert code == 200
|
||||
assert rspn["submenus_count"] == 1
|
||||
|
||||
# Обновляем подменю и проверяем
|
||||
submenu["title"] = "updated_submenu"
|
||||
code, rspn = await self.Submenu.update(client, menu, submenu)
|
||||
assert code == 200
|
||||
assert submenu["title"] == rspn["title"]
|
||||
submenu.update(rspn)
|
||||
|
||||
# Удаляем подменю
|
||||
code = await self.Submenu.delete(client, menu, submenu)
|
||||
assert code == 200
|
||||
|
||||
# Проверяем меню
|
||||
code, rspn = await self.Menu.get(client, menu)
|
||||
assert code == 200
|
||||
assert rspn["submenus_count"] == 0
|
||||
|
||||
# Проверяем удаленное подменю
|
||||
code, rspn = await self.Submenu.get(client, menu, submenu)
|
||||
assert code == 404
|
||||
|
||||
# удаляем сопутствующее
|
||||
await self.Menu.delete(client, menu)
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_dishes(self, client: AsyncClient) -> None:
|
||||
# Создаем меню и проверяем ответ
|
||||
menu = {
|
||||
"title": "Menu",
|
||||
"description": "main menu",
|
||||
}
|
||||
code, rspn = await self.Menu.write(client, menu)
|
||||
assert code == 201
|
||||
menu.update(rspn)
|
||||
|
||||
# Создаем и проверяем подменю
|
||||
submenu = {
|
||||
"title": "Submenu",
|
||||
"description": "submenu",
|
||||
"parent_menu": menu["id"],
|
||||
}
|
||||
code, rspn = await self.Submenu.write(client, menu, submenu)
|
||||
assert code == 201
|
||||
submenu.update(rspn)
|
||||
|
||||
# Проверяем все блюда в подменю
|
||||
code, rspn = await self.Dish.read_all(client, menu, submenu)
|
||||
assert code == 200
|
||||
assert rspn == []
|
||||
|
||||
# Добавляем блюдо
|
||||
dish = {
|
||||
"title": "dish",
|
||||
"description": "some dish",
|
||||
"price": "12.5",
|
||||
"parent_submenu": submenu["id"],
|
||||
}
|
||||
code, rspn = await self.Dish.write(client, menu, submenu, dish)
|
||||
assert code == 201
|
||||
dish.update(rspn)
|
||||
|
||||
# Получаем блюдо
|
||||
code, rspn = await self.Dish.get(client, menu, submenu, dish)
|
||||
assert code == 200
|
||||
assert rspn["title"] == dish["title"]
|
||||
|
||||
# Проверяем меню на количество блюд
|
||||
code, rspn = await self.Menu.get(client, menu)
|
||||
assert code == 200
|
||||
assert rspn["dishes_count"] == 1
|
||||
|
||||
# Проверяем подменю на наличие блюд
|
||||
code, rspn = await self.Submenu.get(client, menu, submenu)
|
||||
assert code == 200
|
||||
assert rspn["dishes_count"] == 1
|
||||
|
||||
# Обновляем блюдо и проверяем
|
||||
dish["title"] = "updated_dish"
|
||||
code, rspn = await self.Dish.update(client, menu, submenu, dish)
|
||||
assert code == 200
|
||||
assert dish["title"] == rspn["title"]
|
||||
dish.update(rspn)
|
||||
|
||||
# Удаляем подменю
|
||||
code = await self.Dish.delete(client, menu, submenu, dish)
|
||||
assert code == 200
|
||||
|
||||
# Проверяем меню
|
||||
code, rspn = await self.Menu.get(client, menu)
|
||||
assert code == 200
|
||||
assert rspn["dishes_count"] == 0
|
||||
|
||||
# Проверяем подменю на наличие блюд
|
||||
code, rspn = await self.Submenu.get(client, menu, submenu)
|
||||
assert code == 200
|
||||
assert rspn["dishes_count"] == 0
|
||||
|
||||
# Проверяем удаленное блюдо
|
||||
code, rspn = await self.Dish.get(client, menu, submenu, dish)
|
||||
assert code == 404
|
||||
|
||||
# удаляем сопутствующее
|
||||
await self.Submenu.delete(client, menu, submenu)
|
||||
await self.Menu.delete(client, menu)
|
||||
data = {"title": "Menu", "description": None}
|
||||
code, rspn = await TestBaseCrud.Menu.write(client, data)
|
||||
assert code == 201
|
||||
assert rspn["title"] == "Menu"
|
||||
assert rspn["description"] is None
|
||||
data = {"title": "Menu1", "description": "11"}
|
||||
code, rspn = await TestBaseCrud.Menu.write(client, data)
|
||||
code, rspn = await TestBaseCrud.Menu.read_all(client)
|
||||
|
||||
|
||||
class TestСontinuity:
|
||||
@pytest.mark.asyncio
|
||||
async def test_postman_continuity(self, client):
|
||||
# Создаем меню
|
||||
menu = {
|
||||
"title": "Menu",
|
||||
"description": "main menu",
|
||||
}
|
||||
code, rspn = await TestBaseCrud.Menu.write(client, menu)
|
||||
assert code == 201
|
||||
assert "id" in rspn.keys()
|
||||
menu.update(rspn)
|
||||
|
||||
# Создаем подменю
|
||||
submenu = {
|
||||
"title": "Submenu",
|
||||
"description": "submenu",
|
||||
"parent_menu": menu["id"],
|
||||
}
|
||||
code, rspn = await TestBaseCrud.Submenu.write(client, menu, submenu)
|
||||
assert code == 201
|
||||
assert "id" in rspn.keys()
|
||||
submenu.update(rspn)
|
||||
|
||||
# Добавляем блюдо1
|
||||
dish = {
|
||||
"title": "dish1",
|
||||
"description": "some dish1",
|
||||
"price": "13.50",
|
||||
"parent_submenu": submenu["id"],
|
||||
}
|
||||
code, rspn = await TestBaseCrud.Dish.write(client, menu, submenu, dish)
|
||||
assert code == 201
|
||||
assert "id" in rspn.keys()
|
||||
dish.update(rspn)
|
||||
|
||||
# Добавляем блюдо2
|
||||
dish = {
|
||||
"title": "dish2",
|
||||
"description": "some dish2",
|
||||
"price": "12.50",
|
||||
"parent_submenu": submenu["id"],
|
||||
}
|
||||
code, rspn = await TestBaseCrud.Dish.write(client, menu, submenu, dish)
|
||||
assert code == 201
|
||||
assert "id" in rspn.keys()
|
||||
dish.update(rspn)
|
||||
|
||||
# Просматриваем конкретное меню
|
||||
code, rspn = await TestBaseCrud.Menu.get(client, menu)
|
||||
assert code == 200
|
||||
assert "id" in rspn.keys()
|
||||
assert menu["id"] == rspn["id"]
|
||||
assert "submenus_count" in rspn.keys()
|
||||
assert rspn["submenus_count"] == 1
|
||||
assert "dishes_count" in rspn.keys()
|
||||
assert rspn["dishes_count"] == 2
|
||||
|
||||
# Просматриваем конкретное подменю
|
||||
code, rspn = await TestBaseCrud.Submenu.get(client, menu, submenu)
|
||||
assert code == 200
|
||||
assert "id" in rspn.keys()
|
||||
assert "dishes_count" in rspn.keys()
|
||||
assert rspn["dishes_count"] == 2
|
||||
|
||||
# Удаляем подменю
|
||||
code = await TestBaseCrud.Submenu.delete(client, menu, submenu)
|
||||
assert code == 200
|
||||
|
||||
# Просматриваем список подменю
|
||||
code, rspn = await TestBaseCrud.Submenu.read_all(client, menu)
|
||||
assert code == 200
|
||||
assert rspn == []
|
||||
|
||||
# Просматриваем список блюд
|
||||
code, rspn = await TestBaseCrud.Dish.read_all(client, menu, submenu)
|
||||
assert code == 200
|
||||
assert rspn == []
|
||||
|
||||
# Просматриваем конкретное меню
|
||||
code, rspn = await TestBaseCrud.Menu.get(client, menu)
|
||||
assert code == 200
|
||||
assert "id" in rspn.keys()
|
||||
assert menu["id"] == rspn["id"]
|
||||
assert "submenus_count" in rspn.keys()
|
||||
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
|
||||
|
||||
# Просматриваем все меню
|
||||
code, rspn = await TestBaseCrud.Menu.read_all(client)
|
||||
assert code == 200
|
||||
assert rspn == []
|
||||
# code, menu = await self.Menu.get(client, {"id": rspn.get("id")})
|
||||
# assert code == 200
|
||||
# assert menu["title"] == rspn["title"]
|
||||
#
|
||||
# upd_data = {
|
||||
# "id": rspn.get("id"),
|
||||
# "title": "upd Menu",
|
||||
# "description": "",
|
||||
# }
|
||||
# code, upd_rspn = await self.Menu.update(client, upd_data)
|
||||
# assert code == 200
|
||||
# assert upd_rspn["title"] == "upd Menu"
|
||||
#
|
||||
# code = await self.Menu.delete(client, rspn)
|
||||
# assert code == 200
|
||||
#
|
||||
# code, menu = await self.Menu.get(client, {"id": rspn.get("id")})
|
||||
# assert code == 404
|
||||
#
|
||||
# @pytest.mark.asyncio
|
||||
# async def test_submenus(self, client) -> None:
|
||||
# # Создаем меню и проверяем ответ
|
||||
# menu = {"title": "Menu", "description": "main menu"}
|
||||
# code, rspn = await self.Menu.write(client, menu)
|
||||
# assert code == 201
|
||||
# menu.update(rspn)
|
||||
#
|
||||
# # Проверяем наличие подменю
|
||||
# code, rspn = await self.Submenu.read_all(client, menu)
|
||||
# assert code == 200
|
||||
# assert rspn == []
|
||||
#
|
||||
# # Создаем и проверяем подменю
|
||||
# submenu = {
|
||||
# "title": "Submenu",
|
||||
# "description": "submenu",
|
||||
# "parent_menu": menu["id"],
|
||||
# }
|
||||
# code, rspn = await self.Submenu.write(client, menu, submenu)
|
||||
# assert code == 201
|
||||
# submenu.update(rspn)
|
||||
#
|
||||
# # Проверяем меню на наличие подменю
|
||||
# code, rspn = await self.Menu.get(client, menu)
|
||||
# assert code == 200
|
||||
# assert rspn["submenus_count"] == 1
|
||||
#
|
||||
# # Обновляем подменю и проверяем
|
||||
# submenu["title"] = "updated_submenu"
|
||||
# code, rspn = await self.Submenu.update(client, menu, submenu)
|
||||
# assert code == 200
|
||||
# assert submenu["title"] == rspn["title"]
|
||||
# submenu.update(rspn)
|
||||
#
|
||||
# # Удаляем подменю
|
||||
# code = await self.Submenu.delete(client, menu, submenu)
|
||||
# assert code == 200
|
||||
#
|
||||
# # Проверяем меню
|
||||
# code, rspn = await self.Menu.get(client, menu)
|
||||
# assert code == 200
|
||||
# assert rspn["submenus_count"] == 0
|
||||
#
|
||||
# # Проверяем удаленное подменю
|
||||
# code, rspn = await self.Submenu.get(client, menu, submenu)
|
||||
# assert code == 404
|
||||
#
|
||||
# # удаляем сопутствующее
|
||||
# await self.Menu.delete(client, menu)
|
||||
#
|
||||
# @pytest.mark.asyncio
|
||||
# async def test_dishes(self, client: AsyncClient) -> None:
|
||||
# # Создаем меню и проверяем ответ
|
||||
# menu = {
|
||||
# "title": "Menu",
|
||||
# "description": "main menu",
|
||||
# }
|
||||
# code, rspn = await self.Menu.write(client, menu)
|
||||
# assert code == 201
|
||||
# menu.update(rspn)
|
||||
#
|
||||
# # Создаем и проверяем подменю
|
||||
# submenu = {
|
||||
# "title": "Submenu",
|
||||
# "description": "submenu",
|
||||
# "parent_menu": menu["id"],
|
||||
# }
|
||||
# code, rspn = await self.Submenu.write(client, menu, submenu)
|
||||
# assert code == 201
|
||||
# submenu.update(rspn)
|
||||
#
|
||||
# # Проверяем все блюда в подменю
|
||||
# code, rspn = await self.Dish.read_all(client, menu, submenu)
|
||||
# assert code == 200
|
||||
# assert rspn == []
|
||||
#
|
||||
# # Добавляем блюдо
|
||||
# dish = {
|
||||
# "title": "dish",
|
||||
# "description": "some dish",
|
||||
# "price": "12.5",
|
||||
# "parent_submenu": submenu["id"],
|
||||
# }
|
||||
# code, rspn = await self.Dish.write(client, menu, submenu, dish)
|
||||
# assert code == 201
|
||||
# dish.update(rspn)
|
||||
#
|
||||
# # Получаем блюдо
|
||||
# code, rspn = await self.Dish.get(client, menu, submenu, dish)
|
||||
# assert code == 200
|
||||
# assert rspn["title"] == dish["title"]
|
||||
#
|
||||
# # Проверяем меню на количество блюд
|
||||
# code, rspn = await self.Menu.get(client, menu)
|
||||
# assert code == 200
|
||||
# assert rspn["dishes_count"] == 1
|
||||
#
|
||||
# # Проверяем подменю на наличие блюд
|
||||
# code, rspn = await self.Submenu.get(client, menu, submenu)
|
||||
# assert code == 200
|
||||
# assert rspn["dishes_count"] == 1
|
||||
#
|
||||
# # Обновляем блюдо и проверяем
|
||||
# dish["title"] = "updated_dish"
|
||||
# code, rspn = await self.Dish.update(client, menu, submenu, dish)
|
||||
# assert code == 200
|
||||
# assert dish["title"] == rspn["title"]
|
||||
# dish.update(rspn)
|
||||
#
|
||||
# # Удаляем подменю
|
||||
# code = await self.Dish.delete(client, menu, submenu, dish)
|
||||
# assert code == 200
|
||||
#
|
||||
# # Проверяем меню
|
||||
# code, rspn = await self.Menu.get(client, menu)
|
||||
# assert code == 200
|
||||
# assert rspn["dishes_count"] == 0
|
||||
#
|
||||
# # Проверяем подменю на наличие блюд
|
||||
# code, rspn = await self.Submenu.get(client, menu, submenu)
|
||||
# assert code == 200
|
||||
# assert rspn["dishes_count"] == 0
|
||||
#
|
||||
# # Проверяем удаленное блюдо
|
||||
# code, rspn = await self.Dish.get(client, menu, submenu, dish)
|
||||
# assert code == 404
|
||||
#
|
||||
# # удаляем сопутствующее
|
||||
# await self.Submenu.delete(client, menu, submenu)
|
||||
# await self.Menu.delete(client, menu)
|
||||
#
|
||||
#
|
||||
# class TestСontinuity:
|
||||
# @pytest.mark.asyncio
|
||||
# async def test_postman_continuity(self, client):
|
||||
# # Создаем меню
|
||||
# menu = {
|
||||
# "title": "Menu",
|
||||
# "description": "main menu",
|
||||
# }
|
||||
# code, rspn = await TestBaseCrud.Menu.write(client, menu)
|
||||
# assert code == 201
|
||||
# assert "id" in rspn.keys()
|
||||
# menu.update(rspn)
|
||||
#
|
||||
# # Создаем подменю
|
||||
# submenu = {
|
||||
# "title": "Submenu",
|
||||
# "description": "submenu",
|
||||
# "parent_menu": menu["id"],
|
||||
# }
|
||||
# code, rspn = await TestBaseCrud.Submenu.write(client, menu, submenu)
|
||||
# assert code == 201
|
||||
# assert "id" in rspn.keys()
|
||||
# submenu.update(rspn)
|
||||
#
|
||||
# # Добавляем блюдо1
|
||||
# dish = {
|
||||
# "title": "dish1",
|
||||
# "description": "some dish1",
|
||||
# "price": "13.50",
|
||||
# "parent_submenu": submenu["id"],
|
||||
# }
|
||||
# code, rspn = await TestBaseCrud.Dish.write(client, menu, submenu, dish)
|
||||
# assert code == 201
|
||||
# assert "id" in rspn.keys()
|
||||
# dish.update(rspn)
|
||||
#
|
||||
# # Добавляем блюдо2
|
||||
# dish = {
|
||||
# "title": "dish2",
|
||||
# "description": "some dish2",
|
||||
# "price": "12.50",
|
||||
# "parent_submenu": submenu["id"],
|
||||
# }
|
||||
# code, rspn = await TestBaseCrud.Dish.write(client, menu, submenu, dish)
|
||||
# assert code == 201
|
||||
# assert "id" in rspn.keys()
|
||||
# dish.update(rspn)
|
||||
#
|
||||
# # Просматриваем конкретное меню
|
||||
# code, rspn = await TestBaseCrud.Menu.get(client, menu)
|
||||
# assert code == 200
|
||||
# assert "id" in rspn.keys()
|
||||
# assert menu["id"] == rspn["id"]
|
||||
# assert "submenus_count" in rspn.keys()
|
||||
# assert rspn["submenus_count"] == 1
|
||||
# assert "dishes_count" in rspn.keys()
|
||||
# assert rspn["dishes_count"] == 2
|
||||
#
|
||||
# # Просматриваем конкретное подменю
|
||||
# code, rspn = await TestBaseCrud.Submenu.get(client, menu, submenu)
|
||||
# assert code == 200
|
||||
# assert "id" in rspn.keys()
|
||||
# assert "dishes_count" in rspn.keys()
|
||||
# assert rspn["dishes_count"] == 2
|
||||
#
|
||||
# # Удаляем подменю
|
||||
# code = await TestBaseCrud.Submenu.delete(client, menu, submenu)
|
||||
# assert code == 200
|
||||
#
|
||||
# # Просматриваем список подменю
|
||||
# code, rspn = await TestBaseCrud.Submenu.read_all(client, menu)
|
||||
# assert code == 200
|
||||
# assert rspn == []
|
||||
#
|
||||
# # Просматриваем список блюд
|
||||
# code, rspn = await TestBaseCrud.Dish.read_all(client, menu, submenu)
|
||||
# assert code == 200
|
||||
# assert rspn == []
|
||||
#
|
||||
# # Просматриваем конкретное меню
|
||||
# code, rspn = await TestBaseCrud.Menu.get(client, menu)
|
||||
# assert code == 200
|
||||
# assert "id" in rspn.keys()
|
||||
# assert menu["id"] == rspn["id"]
|
||||
# assert "submenus_count" in rspn.keys()
|
||||
# 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
|
||||
#
|
||||
# # Просматриваем все меню
|
||||
# code, rspn = await TestBaseCrud.Menu.read_all(client)
|
||||
# assert code == 200
|
||||
# assert rspn == []
|
||||
|
@@ -1,179 +0,0 @@
|
||||
from uuid import UUID
|
||||
|
||||
import pytest
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from fastfood.cruds.dish import DishCrud
|
||||
from fastfood.cruds.menu import MenuCrud
|
||||
from fastfood.cruds.submenu import SubMenuCrud
|
||||
from fastfood.models import Dish, Menu, SubMenu
|
||||
from fastfood.schemas import DishBase as dishschema
|
||||
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:
|
||||
# Создаем меню
|
||||
menu: Menu = Menu(title="SomeMenu", description="SomeDescription")
|
||||
menu: Menu = await MenuCrud.create_menu_item(
|
||||
menubaseschema.model_validate(menu),
|
||||
asession,
|
||||
)
|
||||
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.scalars().all()[0]
|
||||
|
||||
# Обновляем
|
||||
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,
|
||||
)
|
||||
submenu_id = submenu.id
|
||||
|
||||
# Проверяем подменю
|
||||
req_submenu = await SubMenuCrud.get_submenu_item(
|
||||
menu_id,
|
||||
submenu.id,
|
||||
asession,
|
||||
)
|
||||
assert submenu == req_submenu
|
||||
assert submenu.dishes_count == 0
|
||||
|
||||
# Обновляем меню
|
||||
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)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_dish(asession: AsyncSession):
|
||||
"""Not Implemented yet"""
|
||||
async with asession:
|
||||
# Создаем меню напрямую
|
||||
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,
|
||||
)
|
||||
asession.add(submenu)
|
||||
await asession.commit()
|
||||
await asession.refresh(submenu)
|
||||
submenu_id = submenu.id
|
||||
|
||||
# Создаем блюдо
|
||||
dish: Dish = Dish(
|
||||
title="dish1",
|
||||
description="dish number 1",
|
||||
price="12.5",
|
||||
parent_submenu=submenu_id,
|
||||
)
|
||||
dish = await DishCrud.create_dish_item(
|
||||
submenu_id,
|
||||
dishschema.model_validate(dish),
|
||||
asession,
|
||||
)
|
||||
dish_id = dish.id
|
||||
|
||||
# Проверяем блюдо
|
||||
req_dish = await DishCrud.get_dish_item(
|
||||
dish_id,
|
||||
asession,
|
||||
)
|
||||
assert dish == req_dish
|
||||
|
||||
menu = await MenuCrud.get_menu_item(menu_id, asession)
|
||||
submenu = await SubMenuCrud.get_submenu_item(
|
||||
menu_id,
|
||||
submenu.id,
|
||||
asession,
|
||||
)
|
||||
|
||||
assert menu.submenus_count == 1
|
||||
assert menu.dishes_count == 1
|
||||
assert submenu.dishes_count == 1
|
||||
|
||||
# Обновляем блюдо
|
||||
dish.price = 177
|
||||
req_dish = await DishCrud.update_dish_item(
|
||||
dish_id,
|
||||
dishschema.model_validate(dish),
|
||||
asession,
|
||||
)
|
||||
assert dish == req_dish
|
||||
|
||||
# Удаляем длюдо
|
||||
await DishCrud.delete_dish_item(dish_id, asession)
|
||||
|
||||
menu = await MenuCrud.get_menu_item(menu_id, asession)
|
||||
submenu = await SubMenuCrud.get_submenu_item(
|
||||
menu_id,
|
||||
submenu.id,
|
||||
asession,
|
||||
)
|
||||
|
||||
assert menu.dishes_count == 0
|
||||
assert submenu.dishes_count == 0
|
||||
|
||||
await SubMenuCrud.delete_submenu_item(submenu_id, asession)
|
||||
await MenuCrud.delete_menu_item(menu_id, asession)
|
Reference in New Issue
Block a user