64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
from fastapi.testclient import TestClient
|
|
|
|
from app.main import app
|
|
|
|
client = TestClient(app)
|
|
|
|
|
|
def test_list_events_published() -> None:
|
|
response = client.get("/api/events")
|
|
assert response.status_code == 200
|
|
body = response.json()
|
|
assert isinstance(body, list)
|
|
if body:
|
|
assert "slug" in body[0]
|
|
assert "venue" in body[0]
|
|
assert body[0]["status"] == "published"
|
|
|
|
|
|
def test_list_events_filter_category() -> None:
|
|
response = client.get("/api/events", params={"category": "garba", "upcoming": "false"})
|
|
assert response.status_code == 200
|
|
for item in response.json():
|
|
assert item["category"] == "garba"
|
|
|
|
|
|
def test_get_event_by_slug() -> None:
|
|
listing = client.get("/api/events", params={"upcoming": "false"})
|
|
assert listing.status_code == 200
|
|
if not listing.json():
|
|
return
|
|
slug = listing.json()[0]["slug"]
|
|
detail = client.get(f"/api/events/{slug}")
|
|
assert detail.status_code == 200
|
|
data = detail.json()
|
|
assert data["slug"] == slug
|
|
assert "ticket_types" in data
|
|
assert "media" in data
|
|
|
|
|
|
def test_get_event_not_found() -> None:
|
|
response = client.get("/api/events/does-not-exist-slug")
|
|
assert response.status_code == 404
|
|
|
|
|
|
def test_list_venues() -> None:
|
|
response = client.get("/api/venues")
|
|
assert response.status_code == 200
|
|
assert isinstance(response.json(), list)
|
|
|
|
|
|
def test_get_venue_by_id() -> None:
|
|
listing = client.get("/api/venues")
|
|
assert listing.status_code == 200
|
|
if not listing.json():
|
|
return
|
|
venue_id = listing.json()[0]["id"]
|
|
response = client.get(f"/api/venues/{venue_id}")
|
|
assert response.status_code == 200
|
|
assert response.json()["id"] == venue_id
|
|
|
|
|
|
def test_get_venue_not_found() -> None:
|
|
response = client.get("/api/venues/999999")
|
|
assert response.status_code == 404
|