Coverage for tests / test_field_sa_args_kwargs.py: 100%
20 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-06-10 09:40 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-06-10 09:40 +0000
1from sqlalchemy import ForeignKey 1qrstuvwx
2from sqlmodel import Field, SQLModel, create_engine 1qrstuvwx
5def test_sa_column_args(clear_sqlmodel, caplog) -> None: 1qrstuvwx
6 class Team(SQLModel, table=True): 1abcdefgh
7 id: int | None = Field(default=None, primary_key=True) 1abcdefgh
8 name: str 1abcdefgh
10 class Hero(SQLModel, table=True): 1abcdefgh
11 id: int | None = Field(default=None, primary_key=True) 1abcdefgh
12 team_id: int | None = Field( 1abcdefgh
13 default=None,
14 sa_column_args=[ForeignKey("team.id")],
15 )
17 engine = create_engine("sqlite://", echo=True) 1abcdefgh
18 SQLModel.metadata.create_all(engine) 1abcdefgh
19 create_table_log = [ 1abcdefgh
20 message for message in caplog.messages if "CREATE TABLE hero" in message
21 ][0]
22 assert "FOREIGN KEY(team_id) REFERENCES team (id)" in create_table_log 1abcdefgh
25def test_sa_column_kargs(clear_sqlmodel, caplog) -> None: 1qrstuvwx
26 class Item(SQLModel, table=True): 1ijklmnop
27 id: int | None = Field( 1ijklmnop
28 default=None,
29 sa_column_kwargs={"primary_key": True},
30 )
32 engine = create_engine("sqlite://", echo=True) 1ijklmnop
33 SQLModel.metadata.create_all(engine) 1ijklmnop
34 create_table_log = [ 1ijklmnop
35 message for message in caplog.messages if "CREATE TABLE item" in message
36 ][0]
37 assert "PRIMARY KEY (id)" in create_table_log 1ijklmnop