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