From: Henryk Plötz Date: Thu, 9 Aug 2018 22:24:33 +0000 (+0200) Subject: Improve test coverage slightly X-Git-Tag: v2.0.0~1^2~133 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9f65c1aeca1571c624af4cd4eb38c3ceab598535;p=thirdparty%2Fpython-fints.git Improve test coverage slightly --- 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=[])