Files
voidea/tests/unit/api/test_schemas.py
T

79 lines
2.2 KiB
Python

"""Tests for API schema validation."""
import pytest
from pydantic import ValidationError
from app.schemas.auth import LoginRequest, RegisterRequest
from app.schemas.idea import IdeaCreate, IdeaUpdate
from app.schemas.user import UserCreate
class TestAuthSchemas:
def test_register_valid(self):
data = RegisterRequest(
email="test@example.com",
password="password123",
display_name="Test User",
)
assert data.email == "test@example.com"
def test_register_short_password(self):
with pytest.raises(ValidationError):
RegisterRequest(
email="test@example.com",
password="123",
display_name="Test",
)
def test_register_invalid_email(self):
with pytest.raises(ValidationError):
RegisterRequest(
email="not-an-email",
password="password123",
display_name="Test",
)
def test_login_valid(self):
data = LoginRequest(email="test@example.com", password="pass")
assert data.email == "test@example.com"
class TestIdeaSchemas:
def test_idea_create_valid(self):
data = IdeaCreate(title="My Idea", content="Some content")
assert data.title == "My Idea"
assert data.is_public is False
def test_idea_create_with_tags(self):
data = IdeaCreate(
title="My Idea",
content="Content",
tags=["tech", "AI"],
is_public=True,
)
assert data.tags == ["tech", "AI"]
assert data.is_public is True
def test_idea_create_empty_title(self):
with pytest.raises(ValidationError):
IdeaCreate(title="", content="Content")
def test_idea_update_partial(self):
data = IdeaUpdate(title="New Title")
assert data.title == "New Title"
assert data.content is None
def test_idea_update_empty(self):
data = IdeaUpdate()
assert data.title is None
class TestUserSchemas:
def test_user_create_valid(self):
data = UserCreate(
email="test@example.com",
password="password123",
display_name="Test",
)
assert data.display_name == "Test"