#!/bin/bash # Add product variations test data via API API_URL="http://localhost:8080/api" # First, login to get JWT token echo "Logging in to get JWT token..." TOKEN=$(curl -s -X POST "$API_URL/auth/login" \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"admin"}' | \ jq -r '.token') if [ -z "$TOKEN" ] || [ "$TOKEN" == "null" ]; then echo "Failed to login! Exiting." exit 1 fi echo "Successfully authenticated!" AUTH_HEADER="Authorization: Bearer $TOKEN" # Get all products to add variations echo "Fetching existing products..." PRODUCTS=$(curl -s -X GET "$API_URL/catalog/products" \ -H "$AUTH_HEADER" | jq -r '.items[]') # Function to add variation to a product add_variation() { local product_id=$1 local quantity=$2 local price=$3 local description=$4 echo "Adding variation: $description (Quantity: $quantity, Price: £$price) to product $product_id" curl -X POST "$API_URL/products/$product_id/variations" \ -H "$AUTH_HEADER" \ -H "Content-Type: application/json" \ -d "{ \"productId\": \"$product_id\", \"quantity\": $quantity, \"price\": $price, \"description\": \"$description\" }" } # Add some sample products first if needed echo "Creating sample products with variations..." # Product 1: Premium CBD Oil PRODUCT_1=$(curl -s -X POST "$API_URL/products" \ -H "$AUTH_HEADER" \ -H "Content-Type: application/json" \ -d '{ "name": "Premium CBD Oil 1000mg", "description": "High-quality full-spectrum CBD oil for wellness and relaxation", "price": 45.00, "stock": 100, "weight": 100, "weightUnit": "Grams", "categoryId": null, "isActive": true }' | jq -r '.id') if [ ! -z "$PRODUCT_1" ] && [ "$PRODUCT_1" != "null" ]; then add_variation "$PRODUCT_1" 1 45.00 "Single Bottle" add_variation "$PRODUCT_1" 2 85.00 "Twin Pack - Save £5" add_variation "$PRODUCT_1" 3 120.00 "Triple Pack - Save £15" add_variation "$PRODUCT_1" 6 220.00 "Six Pack - Save £50" fi # Product 2: Organic Green Tea PRODUCT_2=$(curl -s -X POST "$API_URL/products" \ -H "$AUTH_HEADER" \ -H "Content-Type: application/json" \ -d '{ "name": "Organic Japanese Green Tea", "description": "Premium matcha green tea imported directly from Japan", "price": 12.00, "stock": 200, "weight": 50, "weightUnit": "Grams", "categoryId": null, "isActive": true }' | jq -r '.id') if [ ! -z "$PRODUCT_2" ] && [ "$PRODUCT_2" != "null" ]; then add_variation "$PRODUCT_2" 1 12.00 "50g Pack" add_variation "$PRODUCT_2" 3 33.00 "3x50g Bundle - Save £3" add_variation "$PRODUCT_2" 5 50.00 "5x50g Bundle - Save £10" add_variation "$PRODUCT_2" 10 90.00 "10x50g Bulk - Save £30" fi # Product 3: Artisan Chocolate Box PRODUCT_3=$(curl -s -X POST "$API_URL/products" \ -H "$AUTH_HEADER" \ -H "Content-Type: application/json" \ -d '{ "name": "Artisan Dark Chocolate Collection", "description": "Handcrafted Belgian dark chocolate with various cocoa percentages", "price": 18.00, "stock": 50, "weight": 200, "weightUnit": "Grams", "categoryId": null, "isActive": true }' | jq -r '.id') if [ ! -z "$PRODUCT_3" ] && [ "$PRODUCT_3" != "null" ]; then add_variation "$PRODUCT_3" 1 18.00 "Single Box (12 pieces)" add_variation "$PRODUCT_3" 2 34.00 "Double Box - Save £2" add_variation "$PRODUCT_3" 4 65.00 "Family Pack - Save £7" add_variation "$PRODUCT_3" 12 180.00 "Case of 12 - Save £36" fi # Product 4: Natural Honey PRODUCT_4=$(curl -s -X POST "$API_URL/products" \ -H "$AUTH_HEADER" \ -H "Content-Type: application/json" \ -d '{ "name": "Raw Wildflower Honey", "description": "Pure, unprocessed honey from local beekeepers", "price": 8.50, "stock": 150, "weight": 340, "weightUnit": "Grams", "categoryId": null, "isActive": true }' | jq -r '.id') if [ ! -z "$PRODUCT_4" ] && [ "$PRODUCT_4" != "null" ]; then add_variation "$PRODUCT_4" 1 8.50 "340g Jar" add_variation "$PRODUCT_4" 3 24.00 "3-Jar Set - Save £1.50" add_variation "$PRODUCT_4" 6 45.00 "Half Dozen - Save £6" fi # Product 5: Essential Oil Set PRODUCT_5=$(curl -s -X POST "$API_URL/products" \ -H "$AUTH_HEADER" \ -H "Content-Type: application/json" \ -d '{ "name": "Lavender Essential Oil", "description": "100% pure therapeutic-grade lavender essential oil", "price": 15.00, "stock": 80, "weight": 30, "weightUnit": "Milliliters", "categoryId": null, "isActive": true }' | jq -r '.id') if [ ! -z "$PRODUCT_5" ] && [ "$PRODUCT_5" != "null" ]; then add_variation "$PRODUCT_5" 1 15.00 "30ml Bottle" add_variation "$PRODUCT_5" 2 28.00 "Twin Pack - Save £2" add_variation "$PRODUCT_5" 5 65.00 "5-Pack Bundle - Save £10" fi echo "" echo "Product variations added successfully!" echo "You can now test the following scenarios:" echo "1. Single item purchases" echo "2. Bulk discount bundles" echo "3. Mix and match different products" echo "4. Various quantity combinations"