66 lines
1.8 KiB
Python
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
|