Coverage for tests / test_pydantic / test_model_dump.py: 100%
15 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-11-09 00:02 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-11-09 00:02 +0000
1from typing import Any 1jklmnopqr
3import pytest 1jklmnopqr
4from sqlmodel import SQLModel 1jklmnopqr
5from sqlmodel._compat import PYDANTIC_MINOR_VERSION 1jklmnopqr
8@pytest.mark.parametrize( 1jklmnopqr
9 ("polymorphic_serialization", "expected_result"),
10 [
11 (None, {"user": {"name": "pydantic"}}),
12 (False, {"user": {"name": "pydantic"}}),
13 pytest.param(
14 True,
15 {"user": {"name": "pydantic", "password": "password"}},
16 marks=pytest.mark.skipif(
17 PYDANTIC_MINOR_VERSION < (2, 13),
18 reason="polymorphic_serialization is only available in Pydantic v2.13+",
19 ),
20 ),
21 ],
22)
23def test_polymorphic_serialization( 1jklmnopqr
24 polymorphic_serialization: bool | None, expected_result: dict[str, Any]
25):
27 class User(SQLModel): 1abcdefghi
28 name: str 1abcdefghi
30 class UserLogin(User): 1abcdefghi
31 password: str 1abcdefghi
33 class OuterModel(SQLModel): 1abcdefghi
34 user: User 1abcdefghi
36 outer_model = OuterModel( 1abcdefghi
37 user=UserLogin(name="pydantic", password="password"),
38 )
40 assert ( 1abcdefghi
41 outer_model.model_dump(polymorphic_serialization=polymorphic_serialization)
42 == expected_result
43 )
45 assert outer_model.model_dump(polymorphic_serialization=False) == { 1abcdefghi
46 "user": {"name": "pydantic"}
47 }