Updated backend tests with new courts

This commit is contained in:
2026-05-24 16:16:12 +02:00 Verified
parent 33e623b337
commit 4cfdbad442
2 changed files with 31 additions and 12 deletions
+20 -3
View File
@@ -7,6 +7,7 @@ from app.database import Base, get_db
# Import your app and models # Import your app and models
from app.main import app from app.main import app
from app import models
from fastapi import Request from fastapi import Request
from httpx import ASGITransport, AsyncClient from httpx import ASGITransport, AsyncClient
from sqlalchemy import create_engine from sqlalchemy import create_engine
@@ -43,6 +44,15 @@ def db(prepare_db) -> Generator[Session, None, None]:
connection.close() connection.close()
@pytest.fixture(autouse=True)
def clean_db(db):
db.query(models.Match).delete()
db.query(models.Team).delete()
db.query(models.Court).delete()
db.commit()
yield
@pytest.fixture(scope="function") @pytest.fixture(scope="function")
async def client(db: Session) -> AsyncGenerator[AsyncClient, None]: async def client(db: Session) -> AsyncGenerator[AsyncClient, None]:
def override_get_db(): def override_get_db():
@@ -85,13 +95,20 @@ def auth_headers(client):
@pytest.fixture @pytest.fixture
def valid_tournament_payload(): async def valid_tournament_payload(db):
# 1. Create global courts first
c1 = models.Court(name="Plan 1")
c2 = models.Court(name="Plan 2")
db.add_all([c1, c2])
db.commit()
# 2. Return payload with IDs
return { return {
"name": "Test Tournament", "name": "Test Tournament",
"code": "1234", "code": "1234",
"type": "Double", "type": "Double",
"timestamp": "2024-01-01T10:00:00", "timestamp": "2026-05-24T11:00:00",
"duration": 15, "duration": 15,
"teams": ["Team A", "Team B", "Team C", "Team D"], "teams": ["Team A", "Team B", "Team C", "Team D"],
"courts": ["Court 1", "Court 2"], "courts": [c1.id, c2.id],
} }
+11 -9
View File
@@ -44,7 +44,9 @@ async def test_manage_teams(
# Verify the teams are actually in the first match # Verify the teams are actually in the first match
first_match = final_matches[0] first_match = final_matches[0]
print(first_match) assert first_match["p1_team_id"] is not None
assert first_match["p2_team_id"] is not None
p1_name = first_match["p1_team_id"] p1_name = first_match["p1_team_id"]
p2_name = first_match["p2_team_id"] p2_name = first_match["p2_team_id"]
@@ -60,21 +62,21 @@ async def test_manage_courts(
) )
t_id = res.json()["id"] t_id = res.json()["id"]
# Get initial courts # 1. Get initial courts from the tournament detail
courts_res = await client.get(f"/tournaments/{t_id}") courts_res = await client.get(f"/tournaments/{t_id}")
initial_courts = courts_res.json()["courts"] initial_courts = courts_res.json()["courts"]
assert len(initial_courts) == 2 assert len(initial_courts) == 2
# Delete # 2. Extract the ID from the list so the variable is defined!
court_id = initial_courts[0]["id"] court_to_delete_id = initial_courts[0]["id"]
del_res = await client.delete(
f"/tournaments/{t_id}/courts/{court_id}", headers=auth_headers # 3. Now use that variable in your delete call
) del_res = await client.delete(f"/courts/{court_to_delete_id}", headers=auth_headers)
assert del_res.status_code == 200 assert del_res.status_code == 200
# Create # CREATE: Change this from a tournament-specific route to the global one
create_res = await client.post( create_res = await client.post(
f"/tournaments/{t_id}/courts", json={"name": "New Court"}, headers=auth_headers "/courts", json={"name": "New Court"}, headers=auth_headers # GLOBAL ROUTE
) )
assert create_res.status_code == 200 assert create_res.status_code == 200
assert create_res.json()["name"] == "New Court" assert create_res.json()["name"] == "New Court"