mirror of
https://github.com/sstent/foodplanner.git
synced 2025-12-06 08:01:47 +00:00
102 lines
3.1 KiB
Bash
Executable File
102 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Curl-based test script for exercising the Edit Tracked Meal modal functionality.
|
|
# This script demonstrates how to:
|
|
# 1. Update the quantity of a food in a tracked meal.
|
|
# 2. Remove a food from a tracked meal.
|
|
# 3. Add a new food to a tracked meal.
|
|
#
|
|
# Prerequisites:
|
|
# - The FastAPI server must be running (e.g., uvicorn main:app --reload --port 8000).
|
|
# - You need a valid tracked_meal_id (from the database or API response).
|
|
# - You need valid food_id(s) (from the foods table or API).
|
|
#
|
|
# How to find IDs:
|
|
# 1. tracked_meal_id: Use the GET /tracker endpoint or query the database:
|
|
# SELECT id FROM tracked_meal WHERE tracked_day_id = (SELECT id FROM tracked_day WHERE person = 'Sarah' AND date = '2025-10-02');
|
|
# 2. food_id: Use the GET /api/foods endpoint or query:
|
|
# SELECT id, name FROM food LIMIT 5;
|
|
#
|
|
# Base URL (adjust if your server is on a different host/port)
|
|
BASE_URL="http://localhost:8999"
|
|
|
|
# Set your specific IDs here (replace with actual values)
|
|
TRACKED_MEAL_ID=1 # Example: Replace with your tracked_meal_id
|
|
FOOD_ID_TO_UPDATE=1 # Example: Food to update quantity
|
|
FOOD_ID_TO_REMOVE=2 # Example: Food to remove
|
|
FOOD_ID_TO_ADD=3 # Example: New food to add
|
|
|
|
echo "Testing Edit Tracked Meal functionality..."
|
|
echo "Using tracked_meal_id: $TRACKED_MEAL_ID"
|
|
echo ""
|
|
|
|
# 1. Update Quantity of a Food
|
|
echo "1. Updating quantity of food $FOOD_ID_TO_UPDATE to 200g..."
|
|
curl -X POST "$BASE_URL/tracker/update_tracked_meal_foods" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"tracked_meal_id": '"$TRACKED_MEAL_ID"',
|
|
"foods": [
|
|
{
|
|
"food_id": '"$FOOD_ID_TO_UPDATE"',
|
|
"grams": 200.0
|
|
}
|
|
],
|
|
"removed_food_ids": []
|
|
}'
|
|
|
|
echo ""
|
|
echo "Expected response: {\"status\": \"success\"}"
|
|
echo ""
|
|
|
|
# Verify the update (optional: GET the foods)
|
|
echo "2. Verifying updated foods..."
|
|
curl -X GET "$BASE_URL/tracker/get_tracked_meal_foods/$TRACKED_MEAL_ID"
|
|
|
|
echo ""
|
|
echo "----------------------------------------"
|
|
echo ""
|
|
|
|
# 3. Remove a Food
|
|
echo "3. Removing food $FOOD_ID_TO_REMOVE..."
|
|
curl -X POST "$BASE_URL/tracker/update_tracked_meal_foods" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"tracked_meal_id": '"$TRACKED_MEAL_ID"',
|
|
"foods": [],
|
|
"removed_food_ids": ['"$FOOD_ID_TO_REMOVE"']
|
|
}'
|
|
|
|
echo ""
|
|
echo "Expected response: {\"status\": \"success\"}"
|
|
echo ""
|
|
|
|
# Verify removal
|
|
echo "4. Verifying removed foods..."
|
|
curl -X GET "$BASE_URL/tracker/get_tracked_meal_foods/$TRACKED_MEAL_ID"
|
|
|
|
echo ""
|
|
echo "----------------------------------------"
|
|
echo ""
|
|
|
|
# 5. Add a New Food
|
|
echo "5. Adding new food $FOOD_ID_TO_ADD with 150g..."
|
|
curl -X POST "$BASE_URL/tracker/add_food_to_tracked_meal" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"tracked_meal_id": '"$TRACKED_MEAL_ID"',
|
|
"food_id": '"$FOOD_ID_TO_ADD"',
|
|
"grams": 150.0
|
|
}'
|
|
|
|
echo ""
|
|
echo "Expected response: {\"status\": \"success\"}"
|
|
echo ""
|
|
|
|
# Verify addition
|
|
echo "6. Verifying added foods..."
|
|
curl -X GET "$BASE_URL/tracker/get_tracked_meal_foods/$TRACKED_MEAL_ID"
|
|
|
|
echo ""
|
|
echo "Script completed. Check responses for success/error messages."
|
|
echo "Note: After running, the tracked day will be marked as modified." |