docker and docker tests
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import pytest
|
||||
|
||||
|
||||
class TestCrud:
|
||||
class TestBaseCrud:
|
||||
class Menu:
|
||||
@staticmethod
|
||||
async def read_all(ac):
|
||||
@@ -31,6 +31,7 @@ class TestCrud:
|
||||
async def delete(ac, data):
|
||||
"""Удаление меню по id"""
|
||||
response = await ac.delete(f"/{data.get('id')}")
|
||||
return response.status_code
|
||||
|
||||
class Submenu:
|
||||
@staticmethod
|
||||
@@ -71,6 +72,50 @@ class TestCrud:
|
||||
response = await ac.delete(
|
||||
f"/{menu.get('id')}/submenus/{submenu.get('id')}"
|
||||
)
|
||||
return response.status_code
|
||||
|
||||
class Dish:
|
||||
@staticmethod
|
||||
async def read_all(ac, menu, submenu):
|
||||
"""чтение всех блюд"""
|
||||
response = await ac.get(
|
||||
f"/{menu.get('id')}/submenus/{submenu.get('id')}/dishes/",
|
||||
)
|
||||
return response.status_code, response.json()
|
||||
|
||||
@staticmethod
|
||||
async def get(ac, menu, submenu, dish):
|
||||
"""Получение блюда по id"""
|
||||
response = await ac.get(
|
||||
f"/{menu.get('id')}/submenus/{submenu.get('id')}/dishes/{dish.get('id')}",
|
||||
)
|
||||
return response.status_code, response.json()
|
||||
|
||||
@staticmethod
|
||||
async def write(ac, menu, submenu, dish):
|
||||
"""создания блюда"""
|
||||
response = await ac.post(
|
||||
f"/{menu.get('id')}/submenus/{submenu.get('id')}/dishes/",
|
||||
json=dish,
|
||||
)
|
||||
return response.status_code, response.json()
|
||||
|
||||
@staticmethod
|
||||
async def update(ac, menu, submenu, dish):
|
||||
"""Обновление блюда по id"""
|
||||
response = await ac.patch(
|
||||
f"/{menu.get('id')}/submenus/{submenu.get('id')}/dishes/{dish.get('id')}",
|
||||
json=dish,
|
||||
)
|
||||
return response.status_code, response.json()
|
||||
|
||||
@staticmethod
|
||||
async def delete(ac, menu, submenu, dish):
|
||||
"""Удаление блюда по id"""
|
||||
response = await ac.delete(
|
||||
f"/{menu.get('id')}/submenus/{submenu.get('id')}/dishes/{dish.get('id')}"
|
||||
)
|
||||
return response.status_code
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_menu_crud(self, client):
|
||||
@@ -98,12 +143,13 @@ class TestCrud:
|
||||
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_submenu(self, client):
|
||||
async def test_submenus(self, client):
|
||||
# Создаем меню и проверяем ответ
|
||||
menu = {"title": "Menu", "description": "main menu"}
|
||||
code, rspn = await self.Menu.write(client, menu)
|
||||
@@ -138,7 +184,8 @@ class TestCrud:
|
||||
submenu.update(rspn)
|
||||
|
||||
# Удаляем подменю
|
||||
await self.Submenu.delete(client, menu, submenu)
|
||||
code = await self.Submenu.delete(client, menu, submenu)
|
||||
assert code == 200
|
||||
|
||||
# Проверяем меню
|
||||
code, rspn = await self.Menu.get(client, menu)
|
||||
@@ -152,10 +199,182 @@ class TestCrud:
|
||||
# удаляем сопутствующее
|
||||
await self.Menu.delete(client, menu)
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_dishes(self, client):
|
||||
# Создаем меню и проверяем ответ
|
||||
menu = {
|
||||
"title": "Menu",
|
||||
"description": "main menu",
|
||||
}
|
||||
code, rspn = await self.Menu.write(client, menu)
|
||||
assert code == 201
|
||||
menu.update(rspn)
|
||||
|
||||
#
|
||||
# class TestСontinuity:
|
||||
# @pytest.mark.asyncio
|
||||
# async def test_postman_continuity(self, app):
|
||||
# async with AsyncClient(app=app, base_url=url) as ac:
|
||||
# pass
|
||||
# Создаем и проверяем подменю
|
||||
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 == []
|
||||
|
Reference in New Issue
Block a user