From 9f65c1aeca1571c624af4cd4eb38c3ceab598535 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Henryk=20Pl=C3=B6tz?= Date: Fri, 10 Aug 2018 00:24:33 +0200 Subject: [PATCH] Improve test coverage slightly --- fints/formals.py | 13 ++++++------- tests/test_formals.py | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/fints/formals.py b/fints/formals.py index ad78d6e..f25ff79 100644 --- a/fints/formals.py +++ b/fints/formals.py @@ -167,13 +167,12 @@ class TypedField(Field, SubclassesMixin): def __new__(cls, *args, **kwargs): target_cls = None fallback_cls = None - if 'type' in kwargs: - for subcls in cls._all_subclasses(): - if getattr(subcls, 'type', '') is None: - fallback_cls = subcls - if getattr(subcls, 'type', None) == kwargs['type']: - target_cls = subcls - break + for subcls in cls._all_subclasses(): + if getattr(subcls, 'type', '') is None: + fallback_cls = subcls + if getattr(subcls, 'type', None) == kwargs.get('type', None): + target_cls = subcls + break if target_cls is None and fallback_cls is not None and issubclass(fallback_cls, cls): target_cls = fallback_cls retval = object.__new__(target_cls or cls) diff --git a/tests/test_formals.py b/tests/test_formals.py index 0b9cdee..68590fb 100644 --- a/tests/test_formals.py +++ b/tests/test_formals.py @@ -1,5 +1,5 @@ import pytest -from fints.formals import Container, ContainerField, DataElementField, DataElementGroupField, DigitsField, NumericField, Field, SegmentSequence, SegmentHeader, AlphanumericField +from fints.formals import Container, ContainerField, DataElementField, DataElementGroupField, DigitsField, NumericField, Field, SegmentSequence, SegmentHeader, AlphanumericField, GenericGroupField def test_container_simple(): class A(Container): @@ -319,3 +319,16 @@ def test_segmentheader_short(): h = SegmentHeader('HNHBS', 5, 1) assert repr(h) == "fints.formals.SegmentHeader('HNHBS', 5, 1)" + +def test_container_generic(): + class A(Container): + a = DataElementGroupField() + + assert isinstance(A._fields['a'], GenericGroupField) + + i1 = A() + assert i1._fields['a'].type is None + + assert i1.a + + i2 = A(a=[]) -- 2.47.3