Coverage for tests / test_pydantic / test_model_dump.py: 100%
15 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 typing import Any 1ijklmnop
3import pytest 1ijklmnop
4from sqlmodel import SQLModel 1ijklmnop
5from sqlmodel._compat import PYDANTIC_MINOR_VERSION 1ijklmnop
8@pytest.mark.parametrize( 1ijklmnop
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( 1ijklmnop
24 polymorphic_serialization: bool | None, expected_result: dict[str, Any]
25):
27 class User(SQLModel): 1abcdefgh
28 name: str 1abcdefgh
30 class UserLogin(User): 1abcdefgh
31 password: str 1abcdefgh
33 class OuterModel(SQLModel): 1abcdefgh
34 user: User 1abcdefgh
36 outer_model = OuterModel( 1abcdefgh
37 user=UserLogin(name="pydantic", password="password"),
38 )
40 assert ( 1abcdefgh
41 outer_model.model_dump(polymorphic_serialization=polymorphic_serialization)
42 == expected_result
43 )
45 assert outer_model.model_dump(polymorphic_serialization=False) == { 1abcdefgh
46 "user": {"name": "pydantic"}
47 }