fediversion/backend/tests/test_shows.py
fullsizemalt b4cddf41ea feat: Initialize Fediversion multi-band platform
- Fork elmeg-demo codebase for multi-band support
- Add data importer infrastructure with base class
- Create band-specific importers:
  - phish.py: Phish.net API v5
  - grateful_dead.py: Grateful Stats API
  - setlistfm.py: Dead & Company, Billy Strings (Setlist.fm)
- Add spec-kit configuration for Gemini
- Update README with supported bands and architecture
2025-12-28 12:39:28 -08:00

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