fooder-api/fooder/test/view/test_meal.py

73 lines
2.7 KiB
Python

import datetime
TODAY = datetime.date.today().isoformat()
async def test_create_meal_returns_201(auth_client, diary, meal_payload):
response = await auth_client.post(f"/api/diary/{TODAY}/meal", json=meal_payload)
assert response.status_code == 201
async def test_create_meal_auto_increments_order(auth_client, diary, meal_payload):
r1 = await auth_client.post(f"/api/diary/{TODAY}/meal", json=meal_payload)
r2 = await auth_client.post(f"/api/diary/{TODAY}/meal", json=meal_payload)
assert r2.json()["order"] == r1.json()["order"] + 1
async def test_create_meal_first_order_is_one(auth_client, diary, meal_payload):
# diary fixture already creates a Breakfast meal with order=0
response = await auth_client.post(f"/api/diary/{TODAY}/meal", json=meal_payload)
assert response.json()["order"] == 1
async def test_create_meal_uses_provided_order(auth_client, diary, meal_payload):
response = await auth_client.post(
f"/api/diary/{TODAY}/meal", json={**meal_payload, "order": 99}
)
assert response.json()["order"] == 99
async def test_create_meal_diary_not_found_returns_404(auth_client, meal_payload):
response = await auth_client.post("/api/diary/2000-01-01/meal", json=meal_payload)
assert response.status_code == 404
async def test_create_meal_without_auth_returns_401(client, diary, meal_payload):
response = await client.post(f"/api/diary/{TODAY}/meal", json=meal_payload)
assert response.status_code == 401
async def test_update_meal_returns_200(auth_client, diary, meal):
response = await auth_client.patch(
f"/api/diary/{TODAY}/meal/{meal.id}", json={"name": "Supper"}
)
assert response.status_code == 200
async def test_update_meal_changes_name(auth_client, diary, meal):
response = await auth_client.patch(
f"/api/diary/{TODAY}/meal/{meal.id}", json={"name": "Supper"}
)
assert response.json()["name"] == "Supper"
async def test_update_meal_not_found_returns_404(auth_client, diary):
response = await auth_client.patch(
f"/api/diary/{TODAY}/meal/99999", json={"name": "Ghost"}
)
assert response.status_code == 404
async def test_delete_meal_returns_204(auth_client, diary, meal):
response = await auth_client.delete(f"/api/diary/{TODAY}/meal/{meal.id}")
assert response.status_code == 204
async def test_delete_meal_not_found_returns_404(auth_client, diary):
response = await auth_client.delete(f"/api/diary/{TODAY}/meal/99999")
assert response.status_code == 404
async def test_delete_meal_without_auth_returns_401(client, diary, meal):
response = await client.delete(f"/api/diary/{TODAY}/meal/{meal.id}")
assert response.status_code == 401