-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathtest_post_load.py
44 lines (36 loc) · 1.33 KB
/
test_post_load.py
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
import unittest
import marshmallow
import marshmallow_dataclass
# Regression test for https://github.com/lovasoa/marshmallow_dataclass/issues/75
class TestPostLoad(unittest.TestCase):
@marshmallow_dataclass.dataclass
class Named:
first_name: str
last_name: str
@marshmallow.post_load
def a(self, data, **_kwargs):
data["first_name"] = data["first_name"].capitalize()
return data
@marshmallow.post_load
def z(self, data, **_kwargs):
data["last_name"] = data["last_name"].capitalize()
return data
def test_post_load_method_naming_does_not_affect_data(self):
actual = self.Named.Schema().load(
{"first_name": "matt", "last_name": "groening"}
)
expected = self.Named(first_name="Matt", last_name="Groening")
self.assertEqual(actual, expected)
def test_load_many(self):
actual = self.Named.Schema().load(
[
{"first_name": "matt", "last_name": "groening"},
{"first_name": "bart", "last_name": "simpson"},
],
many=True,
)
expected = [
self.Named(first_name="Matt", last_name="Groening"),
self.Named(first_name="Bart", last_name="Simpson"),
]
self.assertEqual(actual, expected)