Add CRUD operations and tests for Event model
This commit introduces a new CRUDEvent class to manage event-related database operations, including retrieval, creation, updating, and deletion of events. It includes corresponding unit tests to ensure the correctness of these functionalities, updates event schemas for enhanced validation, and refines timezone handling for event dates and deadlines.
This commit is contained in:
@@ -1,13 +1,12 @@
|
||||
import pytest
|
||||
from datetime import datetime, time, timedelta
|
||||
from datetime import datetime, time, timedelta, timezone
|
||||
from uuid import uuid4, UUID
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
from app.schemas.events import EventCreate, EventUpdate, EventResponse
|
||||
|
||||
|
||||
def test_valid_event_create():
|
||||
event_date = datetime.now(ZoneInfo('UTC')) + timedelta(days=1)
|
||||
event_date = datetime.now(tz=timezone.utc) + timedelta(days=1)
|
||||
event_data = {
|
||||
"title": "Emma's First Birthday",
|
||||
"slug": "emmas-first-birthday",
|
||||
@@ -25,7 +24,7 @@ def test_valid_event_create():
|
||||
|
||||
|
||||
def test_invalid_event_create():
|
||||
event_date = datetime.now(ZoneInfo('UTC')) - timedelta(days=1)
|
||||
event_date = datetime.now(tz=timezone.utc) - timedelta(days=1)
|
||||
with pytest.raises(ValueError):
|
||||
EventCreate(
|
||||
title="Past Event",
|
||||
@@ -40,7 +39,7 @@ def test_invalid_timezone():
|
||||
EventCreate(
|
||||
title="Test Event",
|
||||
slug="test-event",
|
||||
event_date=datetime.now(ZoneInfo('UTC')) + timedelta(days=1),
|
||||
event_date=datetime.now(tz=timezone.utc) + timedelta(days=1),
|
||||
timezone="Invalid/Timezone"
|
||||
)
|
||||
|
||||
@@ -56,7 +55,7 @@ def test_event_update_partial():
|
||||
|
||||
|
||||
def test_event_response():
|
||||
event_date = datetime.now(ZoneInfo('UTC')) + timedelta(days=1)
|
||||
event_date = datetime.now(tz=timezone.utc) + timedelta(days=1)
|
||||
event_data = {
|
||||
"id": uuid4(),
|
||||
"title": "Test Event",
|
||||
@@ -64,8 +63,8 @@ def test_event_response():
|
||||
"event_date": event_date,
|
||||
"timezone": "UTC",
|
||||
"created_by": uuid4(),
|
||||
"created_at": datetime.now(ZoneInfo('UTC')),
|
||||
"updated_at": datetime.now(ZoneInfo('UTC'))
|
||||
"created_at": datetime.now(tz=timezone.utc),
|
||||
"updated_at": datetime.now(tz=timezone.utc)
|
||||
}
|
||||
event_response = EventResponse(**event_data)
|
||||
assert event_response.title == "Test Event"
|
||||
@@ -73,7 +72,7 @@ def test_event_response():
|
||||
|
||||
|
||||
def test_invalid_slug_format():
|
||||
event_date = datetime.now(ZoneInfo('UTC')) + timedelta(days=1)
|
||||
event_date = datetime.now(tz=timezone.utc) + timedelta(days=1)
|
||||
with pytest.raises(ValueError):
|
||||
EventCreate(
|
||||
title="Test Event",
|
||||
@@ -84,7 +83,7 @@ def test_invalid_slug_format():
|
||||
|
||||
|
||||
def test_rsvp_deadline_validation():
|
||||
event_date = datetime.now(ZoneInfo('UTC')) + timedelta(days=10)
|
||||
event_date = datetime.now(tz=timezone.utc) + timedelta(days=10)
|
||||
invalid_deadline = event_date + timedelta(days=1)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
|
||||
Reference in New Issue
Block a user