Coverage for tests / test_annotated_uuid.py: 100%
17 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-06 21:09 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-06 21:09 +0000
1import uuid 1jklmnopqr
2from typing import Optional 1jklmnopqr
4from sqlmodel import Field, Session, SQLModel, create_engine, select 1jklmnopqr
7def test_annotated_optional_types(clear_sqlmodel) -> None: 1jklmnopqr
8 from pydantic import UUID4 1abcdefghi
10 class Hero(SQLModel, table=True): 1abcdefghi
11 # Pydantic UUID4 is: Annotated[UUID, UuidVersion(4)]
12 id: Optional[UUID4] = Field(default_factory=uuid.uuid4, primary_key=True) 1abcdefghi
14 engine = create_engine("sqlite:///:memory:") 1abcdefghi
15 SQLModel.metadata.create_all(engine) 1abcdefghi
16 with Session(engine) as db: 1abcdefghi
17 hero = Hero() 1abcdefghi
18 db.add(hero) 1abcdefghi
19 db.commit() 1abcdefghi
20 statement = select(Hero) 1abcdefghi
21 result = db.exec(statement).all() 1abcdefghi
22 assert len(result) == 1 1abcdefghi
23 assert isinstance(hero.id, uuid.UUID) 1abcdefghi