Coverage for tests / test_field_sa_relationship.py: 100%
5 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
1import pytest 1qrstuvwx
2from sqlalchemy.orm import relationship 1qrstuvwx
3from sqlmodel import Field, Relationship, SQLModel 1qrstuvwx
6def test_sa_relationship_no_args() -> None: 1qrstuvwx
7 with pytest.raises(RuntimeError): # pragma: no cover 1abkcldem
9 class Team(SQLModel, table=True): 1abkcldem
10 id: int | None = Field(default=None, primary_key=True) 1abkcldem
11 name: str = Field(index=True) 1abkcldem
12 headquarters: str 1abcde
14 heroes: list["Hero"] = Relationship( 1abkcldem
15 back_populates="team", 1abkcldem
16 sa_relationship_args=["Hero"], 1abkcldem
17 sa_relationship=relationship("Hero", back_populates="team"), 1abkcldem
18 )
20 class Hero(SQLModel, table=True):
21 id: int | None = Field(default=None, primary_key=True)
22 name: str = Field(index=True)
23 secret_name: str
24 age: int | None = Field(default=None, index=True)
26 team_id: int | None = Field(default=None, foreign_key="team.id")
27 team: Team | None = Relationship(back_populates="heroes")
30def test_sa_relationship_no_kwargs() -> None: 1qrstuvwx
31 with pytest.raises(RuntimeError): # pragma: no cover 1fgnhoijp
33 class Team(SQLModel, table=True): 1fgnhoijp
34 id: int | None = Field(default=None, primary_key=True) 1fgnhoijp
35 name: str = Field(index=True) 1fgnhoijp
36 headquarters: str 1fghij
38 heroes: list["Hero"] = Relationship( 1fgnhoijp
39 back_populates="team", 1fgnhoijp
40 sa_relationship_kwargs={"lazy": "selectin"}, 1fgnhoijp
41 sa_relationship=relationship("Hero", back_populates="team"), 1fgnhoijp
42 )
44 class Hero(SQLModel, table=True):
45 id: int | None = Field(default=None, primary_key=True)
46 name: str = Field(index=True)
47 secret_name: str
48 age: int | None = Field(default=None, index=True)
50 team_id: int | None = Field(default=None, foreign_key="team.id")
51 team: Team | None = Relationship(back_populates="heroes")