]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
Improve test coverage slightly
authorHenryk Plötz <henryk@ploetzli.ch>
Thu, 9 Aug 2018 22:24:33 +0000 (00:24 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Mon, 3 Dec 2018 18:34:17 +0000 (19:34 +0100)
fints/formals.py
tests/test_formals.py

index ad78d6ed7fade36bdb3f76bb4336669c585891bd..f25ff799b5ef5ff41a48eb24036f8a175e5cc076 100644 (file)
@@ -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)
index 0b9cdeebf512afccf3ac4f61e40bbd4d94313f10..68590fb15b77762322223cb76a5cf3d09f777801 100644 (file)
@@ -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=[])