Updated backend tests with new courts
This commit is contained in:
@@ -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],
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user