diff --git a/luckycharms/base.py b/luckycharms/base.py index 54f89c8..4f5da67 100644 --- a/luckycharms/base.py +++ b/luckycharms/base.py @@ -185,7 +185,7 @@ def pre_load_func(self, data, many, **kwargs): # pylint: disable=unused-argumen except DecodeError: raise BadRequest(message='Invalid protocol buffer data') else: - data = {} + data = [] if many else {} return data # pylint: disable=unexpected-keyword-arg,no-value-for-parameter diff --git a/tests/test_base.py b/tests/test_base.py index 775133b..7875c62 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -761,3 +761,19 @@ def business_logic(*args, **kwargs): 'b': 'One', 'c': True } + + +def test_many_body(*args, **kwargs): + + class TestSchema(BaseModelSchema): + + a = fields.Int() + b = fields.String() + c = fields.Boolean() + + @TestSchema(many=True) + def business_logic(**kwargs): + return [{"a": 1, "b": "One", "c": True}, {"a": 2, "b": "Two", "c": False}] + + with app.test_request_context("/", method="PUT", headers={"Accept": "application/json"}): + business_logic() # Not raising an exception is the test