Coverage for tests/test_field_sa_args_kwargs.py: 100%
21 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-27 00:03 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-27 00:03 +0000
1from typing import Optional 1uvwxyzABCD
3from sqlalchemy import ForeignKey 1uvwxyzABCD
4from sqlmodel import Field, SQLModel, create_engine 1uvwxyzABCD
7def test_sa_column_args(clear_sqlmodel, caplog) -> None: 1uvwxyzABCD
8 class Team(SQLModel, table=True): 1abcdefghij
9 id: Optional[int] = Field(default=None, primary_key=True) 1abcdefghij
10 name: str 1abcdefghij
12 class Hero(SQLModel, table=True): 1abcdefghij
13 id: Optional[int] = Field(default=None, primary_key=True) 1abcdefghij
14 team_id: Optional[int] = Field( 1abcdefghij
15 default=None,
16 sa_column_args=[ForeignKey("team.id")],
17 )
19 engine = create_engine("sqlite://", echo=True) 1abcdefghij
20 SQLModel.metadata.create_all(engine) 1abcdefghij
21 create_table_log = [ 1abcdefghij
22 message for message in caplog.messages if "CREATE TABLE hero" in message
23 ][0]
24 assert "FOREIGN KEY(team_id) REFERENCES team (id)" in create_table_log 1abcdefghij
27def test_sa_column_kargs(clear_sqlmodel, caplog) -> None: 1uvwxyzABCD
28 class Item(SQLModel, table=True): 1klmnopqrst
29 id: Optional[int] = Field( 1klmnopqrst
30 default=None,
31 sa_column_kwargs={"primary_key": True},
32 )
34 engine = create_engine("sqlite://", echo=True) 1klmnopqrst
35 SQLModel.metadata.create_all(engine) 1klmnopqrst
36 create_table_log = [ 1klmnopqrst
37 message for message in caplog.messages if "CREATE TABLE item" in message
38 ][0]
39 assert "PRIMARY KEY (id)" in create_table_log 1klmnopqrst