86 lines
2.7 KiB
Python
Executable File
86 lines
2.7 KiB
Python
Executable File
import sys
|
|
from starlette.testclient import TestClient
|
|
from app.main import app
|
|
|
|
def test_endpoints():
|
|
client = TestClient(app)
|
|
|
|
# Test pages
|
|
res = client.get("/")
|
|
assert res.status_code == 200, f"Index failed: {res.status_code}"
|
|
assert "Die Kammern des Steins der Weisen" in res.text
|
|
assert "Zauberer-Cockpit" in res.text
|
|
|
|
res = client.get("/broom")
|
|
assert res.status_code == 200
|
|
assert "Der Goldene Ring-Flug" in res.text
|
|
|
|
res = client.get("/duel")
|
|
assert res.status_code == 200
|
|
assert "Das Zauberspruch-Duell" in res.text
|
|
|
|
# Test /chess redirects to /duel
|
|
res = client.get("/chess", follow_redirects=False)
|
|
assert res.status_code in [301, 302]
|
|
assert res.headers["location"] == "/duel"
|
|
|
|
res = client.get("/bottles")
|
|
assert res.status_code == 200
|
|
assert "Snapes Flaschenrätsel" in res.text
|
|
|
|
res = client.get("/sliding")
|
|
assert res.status_code == 200
|
|
assert "Alchemie-Schieberätsel" in res.text
|
|
|
|
res = client.get("/finale")
|
|
assert res.status_code == 200
|
|
assert "ESCAPE GEMEISTERT" in res.text
|
|
|
|
# Test Inventory API
|
|
res = client.get("/api/inventory")
|
|
assert res.status_code == 200
|
|
inv_data = res.json()
|
|
assert "inventory" in inv_data
|
|
assert len(inv_data["inventory"]) >= 3
|
|
item_ids = [item["id"] for item in inv_data["inventory"]]
|
|
assert "wand" in item_ids
|
|
assert "broom" in item_ids
|
|
assert "snape_scroll" in item_ids
|
|
|
|
# Test House API
|
|
res = client.post("/api/player/house", json={"house": "ravenclaw"})
|
|
assert res.status_code == 200
|
|
assert res.json()["house"]["name"] == "Ravenclaw"
|
|
|
|
# Test API Broom complete
|
|
res = client.post("/api/broom/complete", json={"score": 850, "time_taken": 22})
|
|
assert res.status_code == 200
|
|
data = res.json()
|
|
assert data["success"] is True
|
|
|
|
# Test API Duel complete (adds duel_badge)
|
|
res = client.post("/api/duel/complete")
|
|
assert res.status_code == 200
|
|
duel_data = res.json()
|
|
assert duel_data["success"] is True
|
|
assert duel_data["new_item"]["id"] == "duel_badge"
|
|
assert "duel_badge" in duel_data["state"]["inventory"]
|
|
|
|
# Test API Bottles drink: Ahead / Black fire (Bottle 3 - Dwarf, adds philosophers_stone)
|
|
res = client.post("/api/bottles/drink", json={"bottle": 3, "gate": "ahead"})
|
|
assert res.status_code == 200
|
|
drink_data = res.json()
|
|
assert drink_data["result"] == "success_ahead"
|
|
assert "new_item" in drink_data
|
|
assert drink_data["new_item"]["id"] == "philosophers_stone"
|
|
|
|
# Test API Reset
|
|
res = client.post("/api/reset")
|
|
assert res.status_code == 200
|
|
assert res.json()["success"] is True
|
|
|
|
print("ALL TESTS (RING FLIGHT & SPELL DUEL) PASSED! ⭕🪄✨")
|
|
|
|
if __name__ == "__main__":
|
|
test_endpoints()
|