Coverage for tests/test_field_sa_relationship.py: 100%
6 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 List, Optional 1uvwxyzABCD
3import pytest 1uvwxyzABCD
4from sqlalchemy.orm import relationship 1uvwxyzABCD
5from sqlmodel import Field, Relationship, SQLModel 1uvwxyzABCD
8def test_sa_relationship_no_args() -> None: 1uvwxyzABCD
9 with pytest.raises(RuntimeError): # pragma: no cover 1cdoaepfghq
11 class Team(SQLModel, table=True): 1cdoaepfghq
12 id: Optional[int] = Field(default=None, primary_key=True) 1cdoaepfghq
13 name: str = Field(index=True) 1cdoaepfghq
14 headquarters: str 1cdaefgh
16 heroes: List["Hero"] = Relationship( 1cdoaepfghq
17 back_populates="team", 1cdoaepfghq
18 sa_relationship_args=["Hero"], 1cdoaepfghq
19 sa_relationship=relationship("Hero", back_populates="team"), 1cdoaepfghq
20 )
22 class Hero(SQLModel, table=True): 1a
23 id: Optional[int] = Field(default=None, primary_key=True)
24 name: str = Field(index=True)
25 secret_name: str
26 age: Optional[int] = Field(default=None, index=True)
28 team_id: Optional[int] = Field(default=None, foreign_key="team.id")
29 team: Optional[Team] = Relationship(back_populates="heroes")
32def test_sa_relationship_no_kwargs() -> None: 1uvwxyzABCD
33 with pytest.raises(RuntimeError): # pragma: no cover 1ijrbkslmnt
35 class Team(SQLModel, table=True): 1ijrbkslmnt
36 id: Optional[int] = Field(default=None, primary_key=True) 1ijrbkslmnt
37 name: str = Field(index=True) 1ijrbkslmnt
38 headquarters: str 1ijbklmn
40 heroes: List["Hero"] = Relationship( 1ijrbkslmnt
41 back_populates="team", 1ijrbkslmnt
42 sa_relationship_kwargs={"lazy": "selectin"}, 1ijrbkslmnt
43 sa_relationship=relationship("Hero", back_populates="team"), 1ijrbkslmnt
44 )
46 class Hero(SQLModel, table=True): 1b
47 id: Optional[int] = Field(default=None, primary_key=True)
48 name: str = Field(index=True)
49 secret_name: str
50 age: Optional[int] = Field(default=None, index=True)
52 team_id: Optional[int] = Field(default=None, foreign_key="team.id")
53 team: Optional[Team] = Relationship(back_populates="heroes")