73 lines
2.7 KiB
Python
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
|