fastfood_two/tests/e2e_tests/api/menu/test_menu.py

66 lines
1.8 KiB
Python

from pytest import mark
@mark.parametrize(
"menu, is_created",
[((False, False), False), ((True, True), True)],
ids=["Get empty menu list", "Get non-empty menu list"],
indirect=["menu"],
)
async def test_get_menu_list(client, menu, is_created: bool):
response = await client.get("menu/")
assert response.status_code == 200
if is_created:
expected = [menu.to_json()]
else:
expected = []
assert response.json() == expected
@mark.parametrize(
"menu",
[(False, True, False, False), (False, True, False, None)],
ids=["Post menu with description", "Post menu without description"],
indirect=True,
)
async def test_post_menu_add(client, menu):
response = await client.post("menu/", json=menu.to_json())
assert response.status_code == 200
assert response.json() == menu.to_json()
@mark.parametrize(
"menu, json",
[
((True, True), {"title": "updated_title"}),
((True, True), {"title": "updated_title", "description": "updated_description"}),
((True, True), {"title": "updated_title", "description": None}),
],
ids=[
"Update menu title",
"Update menu title and description",
"Update menu title and description to None",
],
indirect=["menu"],
)
async def test_update_menu(client, menu, json):
response = await client.patch(f"menu/{menu.id}", json=json)
assert response.status_code == 200
assert response.json() == {
"id": str(menu.id),
"title": json.get("title"),
"description": json.get("description", None),
}
@mark.parametrize(
"menu",
[(True, False)],
ids=["Delete menu"],
indirect=True,
)
async def test_delete_menu(client, menu):
response = await client.delete(f"menu/{menu.id}")
assert response.status_code == 204