diff --git a/backend/app/tests/api/routes/test_events.py b/backend/app/tests/api/routes/test_events.py index a76c089..1c0d95d 100644 --- a/backend/app/tests/api/routes/test_events.py +++ b/backend/app/tests/api/routes/test_events.py @@ -7,7 +7,7 @@ from app.core.config import settings from app.tests.utils.event import create_random_event -def test_event(client: TestClient, superuser_token_headers: dict[str, str]) -> None: +def test_create_event(client: TestClient, superuser_token_headers: dict[str, str]) -> None: data = {"name": "Foo", "contact": "Someone"} response = client.post( @@ -38,9 +38,9 @@ def test_read_event( assert content["name"] == event.name assert content["contact"] == event.contact assert content["id"] == str(event.id) - assert content["is_active"] == str(event.is_active) - assert content["start_at"] == str(event.start_at) - assert content["end_at"] == str(event.end_at) + assert content["is_active"] == event.is_active + assert str(content["start_at"]) == str(event.start_at) + assert str(content["end_at"]) == str(event.end_at) def test_read_event_not_found( @@ -58,9 +58,9 @@ def test_read_event_not_found( def test_read_event_not_enough_permissions( client: TestClient, normal_user_token_headers: dict[str, str], db: Session ) -> None: - item = create_random_event(db) + event = create_random_event(db) response = client.get( - f"{settings.API_V1_STR}/events/{item.id}", + f"{settings.API_V1_STR}/events/{event.id}", headers=normal_user_token_headers, ) assert response.status_code == 400 @@ -97,9 +97,9 @@ def test_update_event( assert content["name"] == data["name"] assert content["contact"] == data["contact"] assert content["id"] == str(event.id) - assert "is_active" == str(event.is_active) - assert "start_at" == str(event.start_at) - assert "end_at" == str(event.end_at) + assert content["is_active"] == event.is_active + assert str(content["start_at"]) == str(event.start_at) + assert str(content["end_at"]) == str(event.end_at) def test_update_event_not_found( @@ -122,7 +122,7 @@ def test_update_event_not_enough_permissions( event = create_random_event(db) data = {"name": "Updated name", "contact": "Updated contact"} response = client.put( - f"{settings.API_V1_STR}/items/{event.id}", + f"{settings.API_V1_STR}/events/{event.id}", headers=normal_user_token_headers, json=data, ) diff --git a/backend/app/tests/conftest.py b/backend/app/tests/conftest.py index 0e38892..2da463f 100644 --- a/backend/app/tests/conftest.py +++ b/backend/app/tests/conftest.py @@ -7,8 +7,10 @@ from sqlmodel import Session, delete from app.core.config import settings from app.core.db import engine, init_db from app.main import app -from app.models.user import User -from app.tests.utils.user import authentication_token_from_email +from app.models.event import Event +from app.models.user import User, PermissionRight +from app.tests.utils.event import create_random_event +from app.tests.utils.user import authentication_token_from_email, create_random_user from app.tests.utils.utils import get_superuser_token_headers @@ -38,3 +40,20 @@ def normal_user_token_headers(client: TestClient, db: Session) -> dict[str, str] return authentication_token_from_email( client=client, email=settings.EMAIL_TEST_USER, db=db ) + + +class EventUserHeader: + def __init__(self, user: User, event: Event, headers: dict[str, str]) -> None: + self.user = user + self.event = event + self.headers = headers + + +@pytest.fixture(scope="module") +def event_user_token_headers(client: TestClient, db: Session) -> EventUserHeader: + user = create_random_user(db) + event = create_random_event(db, name="Test event for user", contact=str(user.email)) + event.add_user(user=user, rights=PermissionRight.ADMIN, session=db) + headers = authentication_token_from_email(client=client, email=str(user.email), db=db) + + return EventUserHeader(user, event, headers) diff --git a/backend/app/tests/utils/event.py b/backend/app/tests/utils/event.py index bb4fb56..533104c 100644 --- a/backend/app/tests/utils/event.py +++ b/backend/app/tests/utils/event.py @@ -4,8 +4,12 @@ from app.models.event import Event, EventCreate from app.tests.utils.utils import random_email, random_lower_string -def create_random_event(db: Session) -> Event: - name = random_lower_string() - contact = random_email() +def create_random_event(db: Session, name: str = None, contact: str = None) -> Event: + if not name: + name = random_lower_string() + + if not contact: + contact = random_email() + event_in = EventCreate(name=name, contact=contact) return Event.create(session=db, create_obj=event_in)