added restful api
This commit is contained in:
commit
4e359cf3ef
7 changed files with 530 additions and 0 deletions
133
backend/test_api.py
Normal file
133
backend/test_api.py
Normal file
|
@ -0,0 +1,133 @@
|
|||
#!/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()
|
Loading…
Add table
Add a link
Reference in a new issue