1- from sqlmodel import SQLModel
2-
3-
4- def test_polymorphic_serialization_default ():
5-
6- class User (SQLModel ):
7- name : str
8-
9- class UserLogin (User ):
10- password : str
11-
12- class OuterModel (SQLModel ):
13- user : User
14-
15- outer_model = OuterModel (
16- user = UserLogin (name = "pydantic" , password = "password" ),
17- )
1+ from typing import Any
182
19- assert outer_model .model_dump () == {"user" : {"name" : "pydantic" }}
3+ import pytest
4+ from sqlmodel import SQLModel
205
216
22- def test_polymorphic_serialization_false ():
7+ @pytest .mark .parametrize (
8+ ("polymorphic_serialization" , "expected_result" ),
9+ [
10+ (None , {"user" : {"name" : "pydantic" }}),
11+ (False , {"user" : {"name" : "pydantic" }}),
12+ (True , {"user" : {"name" : "pydantic" , "password" : "password" }}),
13+ ],
14+ )
15+ def test_polymorphic_serialization (
16+ polymorphic_serialization : bool | None , expected_result : dict [str , Any ]
17+ ):
2318
2419 class User (SQLModel ):
2520 name : str
@@ -34,26 +29,7 @@ class OuterModel(SQLModel):
3429 user = UserLogin (name = "pydantic" , password = "password" ),
3530 )
3631
37- assert outer_model .model_dump (polymorphic_serialization = False ) == {
38- "user" : {"name" : "pydantic" }
39- }
40-
41-
42- def test_polymorphic_serialization_true ():
43-
44- class User (SQLModel ):
45- name : str
46-
47- class UserLogin (User ):
48- password : str
49-
50- class OuterModel (SQLModel ):
51- user : User
52-
53- outer_model = OuterModel (
54- user = UserLogin (name = "pydantic" , password = "password" ),
32+ assert (
33+ outer_model .model_dump (polymorphic_serialization = polymorphic_serialization )
34+ == expected_result
5535 )
56-
57- assert outer_model .model_dump (polymorphic_serialization = True ) == {
58- "user" : {"name" : "pydantic" , "password" : "password" }
59- }
0 commit comments