elmeg-demo/backend/tests/test_shows.py

70 lines
2.1 KiB
Python

from fastapi.testclient import TestClient
from sqlmodel import Session
from models import Vertical, Show
def test_create_show(client: TestClient, session: Session, test_user_token: str):
# 1. Create a Vertical first (needed for FK)
vertical = Vertical(name="Phish", slug="phish")
session.add(vertical)
session.commit()
# 2. Create Show
response = client.post(
"/shows/",
json={
"date": "2023-12-31T00:00:00",
"vertical_id": vertical.id,
"notes": "New Year's Eve"
},
headers={"Authorization": f"Bearer {test_user_token}"}
)
assert response.status_code == 200
data = response.json()
assert data["notes"] == "New Year's Eve"
assert data["id"] is not None
from datetime import datetime
def test_read_shows(client: TestClient, session: Session):
# Setup data
vertical = Vertical(name="Goose", slug="goose")
session.add(vertical)
session.commit()
show = Show(date=datetime(2024, 1, 1), vertical_id=vertical.id, notes="Test Show")
session.add(show)
session.commit()
# Test Read
response = client.get("/shows/")
assert response.status_code == 200
data = response.json()
assert len(data) > 0
assert data[0]["notes"] == "Test Show"
def test_attendance(client: TestClient, session: Session, test_user_token: str):
# Setup
vertical = Vertical(name="Test Band", slug="test-band")
session.add(vertical)
session.commit()
show = Show(date=datetime(2024, 1, 1), vertical_id=vertical.id)
session.add(show)
session.commit()
# Mark Attendance
response = client.post(
"/attendance/",
json={"show_id": show.id},
headers={"Authorization": f"Bearer {test_user_token}"}
)
assert response.status_code == 200
assert response.json()["show_id"] == show.id
# Verify in "My Attendance"
response = client.get(
"/attendance/me",
headers={"Authorization": f"Bearer {test_user_token}"}
)
assert response.status_code == 200
assert len(response.json()) == 1