#!/usr/bin/env python3 """ Test-Skript fĂŒr die Tschunk Order API """ import requests import json from datetime import datetime BASE_URL = "http://localhost:8000" def test_api(): """Testet alle API-Endpunkte.""" print("🚀 Starte API-Tests...\n") # Test 1: Root endpoint print("1. Teste Root-Endpoint...") try: response = requests.get(f"{BASE_URL}/") print(f"✅ Root endpoint: {response.status_code}") print(f" VerfĂŒgbare GetrĂ€nke: {response.json()['available_drinks']}") print(f" VerfĂŒgbare Mate-Sorten: {response.json()['available_mate_types']}\n") except Exception as e: print(f"❌ Fehler beim Root endpoint: {e}\n") # Test 2: GetrĂ€nke anzeigen print("2. Teste GetrĂ€nke-Endpoint...") try: response = requests.get(f"{BASE_URL}/drinks") print(f"✅ GetrĂ€nke endpoint: {response.status_code}") print(f" GetrĂ€nke: {response.json()}\n") except Exception as e: print(f"❌ Fehler beim GetrĂ€nke endpoint: {e}\n") # Test 3: Bestellung erstellen (mit quantity und notes) print("3. Teste Bestellung erstellen (mit Mengenangabe und SonderwĂŒnschen)...") test_order = { "drinks": [ { "drink_type": "Tschunk", "mate_type": "Club Mate", "quantity": 2, "notes": "Bitte extra kalt servieren" }, { "drink_type": "Virgin Tschunk", "mate_type": "Flora Mate" # quantity und notes werden nicht angegeben, sollten automatisch 1 bzw. None sein }, { "drink_type": "Tschunk Hannover-Mische", "mate_type": "Club Mate", "quantity": 3, "notes": "Ohne EiswĂŒrfel, bitte mit Limettenscheibe" } ] } try: response = requests.post( f"{BASE_URL}/orders", json=test_order, headers={"Content-Type": "application/json"} ) print(f"✅ Bestellung erstellt: {response.status_code}") order_data = response.json() print(f" Bestell-ID: {order_data['id']}") print(f" Bestelldatum: {order_data['order_date']}") print(f" Anzahl GetrĂ€nke: {len(order_data['drinks'])}") # Zeige Details der GetrĂ€nke for i, drink in enumerate(order_data['drinks']): notes_info = f" (Anmerkung: {drink['notes']})" if drink.get('notes') else "" print(f" - GetrĂ€nk {i+1}: {drink['drink_type']} mit {drink['mate_type']} (Menge: {drink['quantity']}){notes_info}") # Speichere Order-ID fĂŒr spĂ€teren Test order_id = order_data['id'] print() except Exception as e: print(f"❌ Fehler beim Erstellen der Bestellung: {e}") return # Test 4: Alle Bestellungen abrufen print("4. Teste Alle Bestellungen abrufen...") try: response = requests.get(f"{BASE_URL}/orders") print(f"✅ Alle Bestellungen: {response.status_code}") orders = response.json() print(f" Anzahl Bestellungen: {len(orders)}") for order in orders: total_quantity = sum(drink['quantity'] for drink in order['drinks']) drinks_with_notes = sum(1 for drink in order['drinks'] if drink.get('notes')) print(f" - Bestellung {order['id']}: {len(order['drinks'])} verschiedene GetrĂ€nke (Gesamtmenge: {total_quantity}, {drinks_with_notes} mit Anmerkungen)") print() except Exception as e: print(f"❌ Fehler beim Abrufen der Bestellungen: {e}\n") # Test 5: Bestellung löschen print("5. Teste Bestellung löschen...") try: response = requests.delete(f"{BASE_URL}/orders/{order_id}") print(f"✅ Bestellung gelöscht: {response.status_code}") print(f" Nachricht: {response.json()['message']}") print() except Exception as e: print(f"❌ Fehler beim Löschen der Bestellung: {e}\n") # Test 6: BestĂ€tige Löschung print("6. BestĂ€tige Löschung...") try: response = requests.get(f"{BASE_URL}/orders") orders = response.json() print(f"✅ Verbleibende Bestellungen: {len(orders)}") print() except Exception as e: print(f"❌ Fehler beim Abrufen der Bestellungen: {e}\n") print("🎉 API-Tests abgeschlossen!") if __name__ == "__main__": print("=" * 50) print("Tschunk Order API - Test Suite") print("=" * 50) print() print("⚠ Stelle sicher, dass der Server auf http://localhost:8000 lĂ€uft!") print() # Frage nach BestĂ€tigung input("DrĂŒcke Enter um fortzufahren...") print() test_api()