File: test_post_load.py

package info (click to toggle)
python-marshmallow-dataclass 8.7.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 332 kB
  • sloc: python: 2,351; makefile: 11; sh: 6
file content (44 lines) | stat: -rw-r--r-- 1,366 bytes parent folder | download | duplicates (3)
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)