tests: change models to use UUID as primary key

This commit is contained in:
2026-01-29 13:43:03 -05:00
parent 5264631550
commit b57ce40b05
5 changed files with 187 additions and 104 deletions

View File

@@ -3,15 +3,11 @@
import uuid
import pytest
from pydantic import BaseModel
from sqlalchemy import String
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import Mapped, mapped_column
from fastapi_toolsets.crud import CrudFactory, SearchConfig, get_searchable_fields
from fastapi_toolsets.crud import SearchConfig, get_searchable_fields
from .conftest import (
Base,
Role,
RoleCreate,
RoleCrud,
@@ -281,37 +277,23 @@ class TestPaginateSearch:
@pytest.mark.anyio
async def test_search_non_string_column(self, db_session: AsyncSession):
"""Search on non-string columns (e.g., UUID) works via cast."""
class Account(Base):
__tablename__ = "accounts"
id: Mapped[uuid.UUID] = mapped_column(primary_key=True, default=uuid.uuid4)
name: Mapped[str] = mapped_column(String(100))
class AccountCreate(BaseModel):
id: uuid.UUID | None = None
name: str
AccountCrud = CrudFactory(Account)
# Create table for this test
async with db_session.get_bind().begin() as conn:
await conn.run_sync(Base.metadata.create_all)
account_id = uuid.UUID("12345678-1234-5678-1234-567812345678")
await AccountCrud.create(
db_session, AccountCreate(id=account_id, name="Test Account")
user_id = uuid.UUID("12345678-1234-5678-1234-567812345678")
await UserCrud.create(
db_session, UserCreate(id=user_id, username="john", email="john@test.com")
)
await UserCrud.create(
db_session, UserCreate(username="jane", email="jane@test.com")
)
await AccountCrud.create(db_session, AccountCreate(name="Other Account"))
# Search by UUID (partial match)
result = await AccountCrud.paginate(
result = await UserCrud.paginate(
db_session,
search="12345678",
search_fields=[Account.id, Account.name],
search_fields=[User.id, User.username],
)
assert result["pagination"]["total_count"] == 1
assert result["data"][0].id == account_id
assert result["data"][0].id == user_id
class TestSearchConfig: