From 1371297c944b9dd0b278bde77c58d50ca7aace76 Mon Sep 17 00:00:00 2001 From: Christodoulos Tsoulloftas Date: Thu, 21 Mar 2024 15:14:23 +0200 Subject: [PATCH] docs: Update wrapper documentation --- tests/fixtures/models.py | 2 +- .../formats/dataclass/models/test_builders.py | 1 + tests/formats/dataclass/parsers/test_dict.py | 29 +++++++++++++++++-- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/tests/fixtures/models.py b/tests/fixtures/models.py index 1c2e47972..6987ccad2 100644 --- a/tests/fixtures/models.py +++ b/tests/fixtures/models.py @@ -99,7 +99,7 @@ class ChoiceType: {"name": "float", "type": float}, {"name": "qname", "type": QName}, {"name": "union", "type": Type["UnionType"], "namespace": "foo"}, - {"name": "tokens", "type": List[Decimal], "tokens": True}, + {"name": "tokens", "type": List[Decimal], "tokens": True, "default_factory": list}, { "wildcard": True, "type": object, diff --git a/tests/formats/dataclass/models/test_builders.py b/tests/formats/dataclass/models/test_builders.py index a1547270a..bcdba9bc1 100644 --- a/tests/formats/dataclass/models/test_builders.py +++ b/tests/formats/dataclass/models/test_builders.py @@ -343,6 +343,7 @@ def test_build_with_choice_field(self): types=(Decimal,), tokens_factory=list, derived=True, + default=list, factory=list, namespaces=("bar",), ), diff --git a/tests/formats/dataclass/parsers/test_dict.py b/tests/formats/dataclass/parsers/test_dict.py index 548a86edc..90f59ca41 100644 --- a/tests/formats/dataclass/parsers/test_dict.py +++ b/tests/formats/dataclass/parsers/test_dict.py @@ -19,7 +19,7 @@ TypeD, UnionType, ) -from tests.fixtures.wrapper import Wrapper +from tests.fixtures.wrapper import Charlie, Wrapper from xsdata.exceptions import ParserError from xsdata.formats.dataclass.models.generics import AnyElement, DerivedElement from xsdata.formats.dataclass.parsers import DictDecoder @@ -106,10 +106,26 @@ def test_decode_with_fail_on_converter_warnings(self): ) def test_decode_wrapper(self): - data = {"alphas": {"alpha": "value"}} + data = { + "alphas": {"alpha": "value"}, + "bravos": {"bravo": [1, 2]}, + "charlies": { + "charlie": [ + {"value": "first", "lang": "en"}, + {"value": "second", "lang": "en"}, + ] + }, + } actual = self.decoder.decode(data, Wrapper) - expected = Wrapper(alpha="value") + expected = Wrapper( + alpha="value", + bravo=[1, 2], + charlie=[ + Charlie(value="first", lang="en"), + Charlie(value="second", lang="en"), + ], + ) self.assertEqual(expected, actual) def test_verify_type(self): @@ -383,3 +399,10 @@ def test_find_var(self): xml_vars = meta.get_all_vars() self.assertIsNone(self.decoder.find_var(xml_vars, "a", [1, 2])) self.assertEqual(xml_vars[0], self.decoder.find_var(xml_vars, "a", {"x": 1})) + + meta = self.decoder.context.build(Wrapper) + xml_vars = meta.get_all_vars() + self.assertIsNone(self.decoder.find_var(xml_vars, "charlies", {})) + self.assertEqual( + xml_vars[0], self.decoder.find_var(xml_vars, "alphas", {"alpha": "foo"}) + )