Coverage for tests/test_annotated_uuid.py: 100%
19 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-07 05:42 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-07 05:42 +0000
1import uuid 1hijklmn
2from typing import Optional 1hijklmn
4from sqlmodel import Field, Session, SQLModel, create_engine, select 1hijklmn
6from tests.conftest import needs_pydanticv2 1hijklmn
9@needs_pydanticv2 1hijklmn
10def test_annotated_optional_types(clear_sqlmodel) -> None: 1hijklmn
11 from pydantic import UUID4 1abcdefg
13 class Hero(SQLModel, table=True): 1abcdefg
14 # Pydantic UUID4 is: Annotated[UUID, UuidVersion(4)]
15 id: Optional[UUID4] = Field(default_factory=uuid.uuid4, primary_key=True) 1abcdefg
17 engine = create_engine("sqlite:///:memory:") 1abcdefg
18 SQLModel.metadata.create_all(engine) 1abcdefg
19 with Session(engine) as db: 1abcdefg
20 hero = Hero() 1abcdefg
21 db.add(hero) 1abcdefg
22 db.commit() 1abcdefg
23 statement = select(Hero) 1abcdefg
24 result = db.exec(statement).all() 1abcdefg
25 assert len(result) == 1 1abcdefg
26 assert isinstance(hero.id, uuid.UUID) 1abcdefg