-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_model_export.py
More file actions
148 lines (112 loc) · 4.48 KB
/
test_model_export.py
File metadata and controls
148 lines (112 loc) · 4.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import factory
import pytest
from factory.alchemy import SESSION_PERSISTENCE_COMMIT
from ellar_sql import model
from ellar_sql.factory.base import EllarSQLFactory
def get_model_factory(db_service):
class User(model.Model):
id: model.Mapped[int] = model.Column(model.Integer, primary_key=True)
name: model.Mapped[str] = model.Column(model.String)
email: model.Mapped[str] = model.Column(model.String)
address: model.Mapped[str] = model.Column(model.String, nullable=True)
city: model.Mapped[str] = model.Column(model.String, nullable=True)
class UserFactory(EllarSQLFactory):
class Meta:
model = User
sqlalchemy_session_factory = db_service.session_factory
sqlalchemy_session_persistence = SESSION_PERSISTENCE_COMMIT
name = factory.Faker("name")
email = factory.Faker("email")
city = factory.Faker("city")
return UserFactory
class TestModelExport:
def test_model_export_without_filter(self, db_service, ignore_base):
user_factory = get_model_factory(db_service)
db_service.create_all()
user = user_factory(
name="Ellar", email="ellar@support.com", city="Andersonchester"
)
assert user.dict() == {
"address": None,
"city": "Andersonchester",
"email": "ellar@support.com",
"id": 1,
"name": "Ellar",
}
db_service.session_factory.close()
def test_model_exclude_none(self, db_service, ignore_base):
user_factory = get_model_factory(db_service)
db_service.create_all()
user = user_factory(
name="Ellar", email="ellar@support.com", city="Andersonchester"
)
assert user.dict(exclude_none=True) == {
"city": "Andersonchester",
"email": "ellar@support.com",
"id": 1,
"name": "Ellar",
}
db_service.session_factory.close()
def test_model_export_include(self, db_service, ignore_base):
user_factory = get_model_factory(db_service)
db_service.create_all()
user = user_factory()
assert user.dict(include={"email", "id", "name"}).keys() == {
"email",
"id",
"name",
}
db_service.session_factory.close()
def test_model_export_exclude(self, db_service, ignore_base):
user_factory = get_model_factory(db_service)
db_service.create_all()
user = user_factory()
assert user.dict(exclude={"email", "name"}).keys() == {"address", "city", "id"}
db_service.session_factory.close()
@pytest.mark.asyncio
class TestModelExportAsync:
async def test_model_export_without_filter_async(
self, db_service_async, ignore_base
):
user_factory = get_model_factory(db_service_async)
db_service_async.create_all()
user = user_factory(
name="Ellar", email="ellar@support.com", city="Andersonchester"
)
assert user.dict() == {
"address": None,
"city": "Andersonchester",
"email": "ellar@support.com",
"id": 1,
"name": "Ellar",
}
db_service_async.session_factory.close()
async def test_model_exclude_none_async(self, db_service_async, ignore_base):
user_factory = get_model_factory(db_service_async)
db_service_async.create_all()
user = user_factory(
name="Ellar", email="ellar@support.com", city="Andersonchester"
)
assert user.dict(exclude_none=True) == {
"city": "Andersonchester",
"email": "ellar@support.com",
"id": 1,
"name": "Ellar",
}
db_service_async.session_factory.close()
async def test_model_export_include_async(self, db_service_async, ignore_base):
user_factory = get_model_factory(db_service_async)
db_service_async.create_all()
user = user_factory()
assert user.dict(include={"email", "id", "name"}).keys() == {
"email",
"id",
"name",
}
db_service_async.session_factory.close()
async def test_model_export_exclude_async(self, db_service_async, ignore_base):
user_factory = get_model_factory(db_service_async)
db_service_async.create_all()
user = user_factory()
assert user.dict(exclude={"email", "name"}).keys() == {"address", "city", "id"}
db_service_async.session_factory.close()