From 50599029477fa66e9b6ca2a915ef3f725c64891d Mon Sep 17 00:00:00 2001 From: fanchi Date: Thu, 5 Jul 2018 16:32:11 +0300 Subject: [PATCH] Added a test for isinstance and fixed a bug --- src/infi/clickhouse_orm/fields.py | 2 +- tests/test_nullable_fields.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/infi/clickhouse_orm/fields.py b/src/infi/clickhouse_orm/fields.py index 8580bb8..6ee18d8 100644 --- a/src/infi/clickhouse_orm/fields.py +++ b/src/infi/clickhouse_orm/fields.py @@ -92,7 +92,7 @@ class Field(object): while inner_field: if isinstance(inner_field, types): return True - inner_field = getattr(self, 'inner_field', None) + inner_field = getattr(inner_field, 'inner_field', None) return False diff --git a/tests/test_nullable_fields.py b/tests/test_nullable_fields.py index c062ca3..b36556b 100644 --- a/tests/test_nullable_fields.py +++ b/tests/test_nullable_fields.py @@ -73,6 +73,22 @@ class NullableFieldsTest(unittest.TestCase): else: self.assertEquals(python_value, value) + def test_isinstance(self): + for field in (StringField, UInt8Field, Float32Field, DateTimeField): + f = NullableField(field()) + self.assertTrue(f.isinstance(field)) + self.assertTrue(f.isinstance(NullableField)) + for field in (Int8Field, Int16Field, Int32Field, Int64Field, UInt8Field, UInt16Field, UInt32Field, UInt64Field): + f = NullableField(field()) + self.assertTrue(f.isinstance(BaseIntField)) + for field in (Float32Field, Float64Field): + f = NullableField(field()) + self.assertTrue(f.isinstance(BaseFloatField)) + f = NullableField(NullableField(UInt32Field())) + self.assertTrue(f.isinstance(BaseIntField)) + self.assertTrue(f.isinstance(NullableField)) + self.assertFalse(f.isinstance(BaseFloatField)) + def _insert_sample_data(self): dt = date(1970, 1, 1) self.database.insert([