Replaces ambiguous shorthand references like `event` and `user` with more descriptive names such as `event_crud` and `user_crud`. Updates imports, function calls, tests, and other references across the codebase to maintain consistency. This improves code readability and reduces potential confusion.
124 lines
4.3 KiB
Python
124 lines
4.3 KiB
Python
from uuid import UUID
|
|
|
|
import pytest
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.crud.event_theme import event_theme_crud
|
|
from app.schemas.event_themes import EventThemeCreate, EventThemeUpdate
|
|
|
|
|
|
def test_create_event_theme(db_session: Session) -> None:
|
|
theme_in = EventThemeCreate(
|
|
name="Animal Theme",
|
|
description="A cute animal-themed celebration",
|
|
preview_image_url="https://example.com/preview/animal_theme.jpg",
|
|
color_palette={
|
|
"primary": "#4CAF50",
|
|
"secondary": "#FFC107",
|
|
"background": "#FFFFFF",
|
|
"text": "#333333"
|
|
},
|
|
fonts={
|
|
"header": "Roboto",
|
|
"body": "Open Sans"
|
|
}
|
|
)
|
|
theme = event_theme_crud.create(db=db_session, obj_in=theme_in)
|
|
assert theme.name == theme_in.name
|
|
assert theme.color_palette == theme_in.color_palette
|
|
assert theme.fonts == theme_in.fonts
|
|
|
|
|
|
def test_get_event_theme(db_session: Session, event_theme_fixture) -> None:
|
|
stored_theme = event_theme_crud.get(db=db_session, id=event_theme_fixture.id)
|
|
assert stored_theme
|
|
assert stored_theme.id == event_theme_fixture.id
|
|
assert stored_theme.name == event_theme_fixture.name
|
|
assert stored_theme.color_palette == event_theme_fixture.color_palette
|
|
assert stored_theme.fonts == event_theme_fixture.fonts
|
|
|
|
|
|
def test_get_event_theme_by_name(db_session: Session, event_theme_fixture) -> None:
|
|
stored_theme = event_theme_crud.get_by_name(db=db_session, name=event_theme_fixture.name)
|
|
assert stored_theme
|
|
assert stored_theme.id == event_theme_fixture.id
|
|
assert stored_theme.name == event_theme_fixture.name
|
|
|
|
|
|
def test_update_event_theme(db_session: Session, event_theme_fixture) -> None:
|
|
theme_update = EventThemeUpdate(
|
|
name="Updated Animal Theme",
|
|
color_palette={
|
|
"primary": "#FF5722",
|
|
"secondary": "#FFC107",
|
|
"background": "#FAFAFA",
|
|
"text": "#212121"
|
|
}
|
|
)
|
|
updated_theme = event_theme_crud.update(
|
|
db=db_session,
|
|
db_obj=event_theme_fixture,
|
|
obj_in=theme_update
|
|
)
|
|
assert updated_theme.id == event_theme_fixture.id
|
|
assert updated_theme.name == "Updated Animal Theme"
|
|
assert updated_theme.color_palette == theme_update.color_palette
|
|
# Original fonts should remain unchanged as they weren't included in the update
|
|
assert updated_theme.fonts == event_theme_fixture.fonts
|
|
|
|
|
|
def test_delete_event_theme(db_session: Session, event_theme_fixture) -> None:
|
|
theme_id = event_theme_fixture.id
|
|
deleted_theme = event_theme_crud.remove(db=db_session, id=theme_id)
|
|
assert deleted_theme.id == theme_id
|
|
|
|
# Verify theme no longer exists
|
|
theme = event_theme_crud.get(db=db_session, id=theme_id)
|
|
assert theme is None
|
|
|
|
|
|
def test_get_active_themes(db_session: Session, event_theme_fixture, mock_event) -> None:
|
|
# First, ensure the theme is associated with an event
|
|
mock_event.theme_id = event_theme_fixture.id
|
|
db_session.commit()
|
|
|
|
# Get active themes
|
|
active_themes = event_theme_crud.get_active_themes(db=db_session)
|
|
|
|
assert len(active_themes) > 0
|
|
assert any(theme.id == event_theme_fixture.id for theme in active_themes)
|
|
|
|
|
|
def test_get_multi_themes(db_session: Session, event_theme_fixture) -> None:
|
|
# Create another theme to test pagination
|
|
another_theme = EventThemeCreate(
|
|
name="Birthday Theme",
|
|
color_palette={
|
|
"primary": "#2196F3",
|
|
"secondary": "#FF4081",
|
|
"background": "#FFFFFF",
|
|
"text": "#000000"
|
|
},
|
|
fonts={
|
|
"header": "Montserrat",
|
|
"body": "Lato"
|
|
}
|
|
)
|
|
event_theme_crud.create(db=db_session, obj_in=another_theme)
|
|
|
|
# Test pagination
|
|
themes = event_theme_crud.get_multi(db=db_session, skip=0, limit=10)
|
|
assert len(themes) >= 2 # Should have at least the fixture and the new theme
|
|
|
|
|
|
def test_get_non_existent_theme(db_session: Session) -> None:
|
|
non_existent_id = UUID('00000000-0000-0000-0000-000000000000')
|
|
theme = event_theme_crud.get(db=db_session, id=non_existent_id)
|
|
assert theme is None
|
|
|
|
|
|
|
|
def test_get_non_existent_theme_by_name(db_session: Session) -> None:
|
|
non_existent_name = "Non-existent Theme"
|
|
theme = event_theme_crud.get_by_name(db=db_session, name=non_existent_name)
|
|
assert theme is None |