Add tests and validation for EventTheme schema
Introduced extensive test cases to validate `EventTheme` schemas, ensuring proper handling of valid and invalid inputs, optional fields, and partial updates. Enhanced schema validation by adding constraints for `name`, `color_palette`, and `fonts` fields, as well as updating `id` to use `UUID` type for consistency. These changes improve data integrity and increase confidence in schema-related functionality.
This commit is contained in:
@@ -1,13 +1,27 @@
|
||||
# app/schemas/event_theme.py
|
||||
from typing import Dict, Optional
|
||||
from pydantic import BaseModel
|
||||
from uuid import UUID # Add this import
|
||||
from pydantic import BaseModel, Field, validator, field_validator
|
||||
|
||||
|
||||
class EventThemeBase(BaseModel):
|
||||
name: str
|
||||
name: str = Field(..., min_length=1) # Ensures name is not empty
|
||||
description: Optional[str] = None
|
||||
preview_image_url: Optional[str] = None
|
||||
color_palette: Dict[str, str]
|
||||
fonts: Dict[str, str]
|
||||
color_palette: Dict[str, str] = Field(..., min_items=1) # Ensures at least one color
|
||||
fonts: Dict[str, str] = Field(..., min_items=1) # Ensures at least one font
|
||||
|
||||
@field_validator('color_palette')
|
||||
def validate_color_palette(cls, v):
|
||||
if not v:
|
||||
raise ValueError("color_palette cannot be empty")
|
||||
return v
|
||||
|
||||
@field_validator('fonts')
|
||||
def validate_fonts(cls, v):
|
||||
if not v:
|
||||
raise ValueError("fonts cannot be empty")
|
||||
return v
|
||||
|
||||
|
||||
class EventThemeCreate(EventThemeBase):
|
||||
@@ -20,12 +34,18 @@ class EventThemeUpdate(EventThemeBase):
|
||||
fonts: Optional[Dict[str, str]] = None
|
||||
|
||||
|
||||
# Move EventThemeInDBBase before EventThemeResponse
|
||||
class EventThemeInDBBase(EventThemeBase):
|
||||
id: str
|
||||
id: UUID # Changed from str to UUID to match the model
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# Now EventThemeResponse can properly inherit from EventThemeInDBBase
|
||||
class EventThemeResponse(EventThemeInDBBase):
|
||||
pass
|
||||
|
||||
|
||||
class EventTheme(EventThemeInDBBase):
|
||||
pass
|
||||
Reference in New Issue
Block a user