diff options
| author | Hasan Ramezani <hasan.r67@gmail.com> | 2020-05-27 00:25:45 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-06-04 08:27:42 +0200 |
| commit | e198beadad56d5fdd06756b097446b7046a84010 (patch) | |
| tree | 259d188fe8ab2490916419a771163a750b618935 /tests | |
| parent | 55556e51fb152c864ddc782d9b56e8b785ccf8bc (diff) | |
Fixed #31630 -- Replaced introspection features with DatabaseFeatures.introspected_field_types.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/inspectdb/tests.py | 50 | ||||
| -rw-r--r-- | tests/introspection/tests.py | 12 | ||||
| -rw-r--r-- | tests/schema/tests.py | 2 |
3 files changed, 18 insertions, 46 deletions
diff --git a/tests/inspectdb/tests.py b/tests/inspectdb/tests.py index 910082510a..7ed96abd37 100644 --- a/tests/inspectdb/tests.py +++ b/tests/inspectdb/tests.py @@ -60,6 +60,7 @@ class InspectDBTestCase(TestCase): def test_field_types(self): """Test introspection of various Django field types""" assertFieldType = self.make_field_type_asserter() + introspected_field_types = connection.features.introspected_field_types # Inspecting Oracle DB doesn't produce correct results (#19884): # - it reports fields as blank=True when they aren't. @@ -74,12 +75,11 @@ class InspectDBTestCase(TestCase): assertFieldType('url_field', "models.CharField(max_length=200)") assertFieldType('date_field', "models.DateField()") assertFieldType('date_time_field', "models.DateTimeField()") - if connection.features.can_introspect_ip_address_field: + if introspected_field_types['GenericIPAddressField'] == 'GenericIPAddressField': assertFieldType('gen_ip_address_field', "models.GenericIPAddressField()") elif not connection.features.interprets_empty_strings_as_nulls: assertFieldType('gen_ip_address_field', "models.CharField(max_length=39)") - if connection.features.can_introspect_time_field: - assertFieldType('time_field', "models.TimeField()") + assertFieldType('time_field', 'models.%s()' % introspected_field_types['TimeField']) if connection.features.has_native_uuid_field: assertFieldType('uuid_field', "models.UUIDField()") elif not connection.features.interprets_empty_strings_as_nulls: @@ -97,20 +97,18 @@ class InspectDBTestCase(TestCase): def test_number_field_types(self): """Test introspection of various Django field types""" assertFieldType = self.make_field_type_asserter() + introspected_field_types = connection.features.introspected_field_types if not connection.features.can_introspect_autofield: assertFieldType('id', "models.IntegerField(primary_key=True) # AutoField?") - if connection.features.can_introspect_big_integer_field: - assertFieldType('big_int_field', "models.BigIntegerField()") - else: - assertFieldType('big_int_field', "models.IntegerField()") + assertFieldType('big_int_field', 'models.%s()' % introspected_field_types['BigIntegerField']) - bool_field_type = connection.features.introspected_boolean_field_type + bool_field_type = introspected_field_types['BooleanField'] assertFieldType('bool_field', "models.{}()".format(bool_field_type)) assertFieldType('null_bool_field', 'models.{}(blank=True, null=True)'.format(bool_field_type)) - if connection.features.can_introspect_decimal_field: + if connection.vendor != 'sqlite': assertFieldType('decimal_field', "models.DecimalField(max_digits=6, decimal_places=1)") else: # Guessed arguments on SQLite, see #5014 assertFieldType('decimal_field', "models.DecimalField(max_digits=10, decimal_places=5) " @@ -118,37 +116,11 @@ class InspectDBTestCase(TestCase): "as this database handles decimal fields as float") assertFieldType('float_field', "models.FloatField()") - assertFieldType('int_field', "models.IntegerField()") - - if connection.features.can_introspect_positive_integer_field: - assertFieldType('pos_int_field', "models.PositiveIntegerField()") - else: - assertFieldType('pos_int_field', "models.IntegerField()") - - if connection.features.can_introspect_positive_integer_field: - if connection.features.can_introspect_big_integer_field: - assertFieldType('pos_big_int_field', 'models.PositiveBigIntegerField()') - else: - assertFieldType('pos_big_int_field', 'models.PositiveIntegerField()') - if connection.features.can_introspect_small_integer_field: - assertFieldType('pos_small_int_field', "models.PositiveSmallIntegerField()") - else: - assertFieldType('pos_small_int_field', "models.PositiveIntegerField()") - else: - if connection.features.can_introspect_big_integer_field: - assertFieldType('pos_big_int_field', 'models.BigIntegerField()') - else: - assertFieldType('pos_big_int_field', 'models.IntegerField()') - if connection.features.can_introspect_small_integer_field: - assertFieldType('pos_small_int_field', "models.SmallIntegerField()") - else: - assertFieldType('pos_small_int_field', "models.IntegerField()") - - if connection.features.can_introspect_small_integer_field: - assertFieldType('small_int_field', "models.SmallIntegerField()") - else: - assertFieldType('small_int_field', "models.IntegerField()") + assertFieldType('pos_int_field', 'models.%s()' % introspected_field_types['PositiveIntegerField']) + assertFieldType('pos_big_int_field', 'models.%s()' % introspected_field_types['PositiveBigIntegerField']) + assertFieldType('pos_small_int_field', 'models.%s()' % introspected_field_types['PositiveSmallIntegerField']) + assertFieldType('small_int_field', 'models.%s()' % introspected_field_types['SmallIntegerField']) @skipUnlessDBFeature('can_introspect_foreign_keys') def test_attribute_name_not_python_keyword(self): diff --git a/tests/introspection/tests.py b/tests/introspection/tests.py index bafd620232..8ca5c3af3b 100644 --- a/tests/introspection/tests.py +++ b/tests/introspection/tests.py @@ -84,10 +84,10 @@ class IntrospectionTests(TransactionTestCase): 'CharField', 'CharField', 'CharField', - 'BigIntegerField' if connection.features.can_introspect_big_integer_field else 'IntegerField', - 'BinaryField' if connection.features.can_introspect_binary_field else 'TextField', - 'SmallIntegerField' if connection.features.can_introspect_small_integer_field else 'IntegerField', - 'DurationField' if connection.features.can_introspect_duration_field else 'BigIntegerField', + connection.features.introspected_field_types['BigIntegerField'], + connection.features.introspected_field_types['BinaryField'], + connection.features.introspected_field_types['SmallIntegerField'], + connection.features.introspected_field_types['DurationField'], ] ) @@ -113,7 +113,7 @@ class IntrospectionTests(TransactionTestCase): with connection.cursor() as cursor: desc = connection.introspection.get_table_description(cursor, City._meta.db_table) self.assertIn( - connection.features.introspected_big_auto_field_type, + connection.features.introspected_field_types['BigAutoField'], [connection.introspection.get_field_type(r[1], r) for r in desc], ) @@ -122,7 +122,7 @@ class IntrospectionTests(TransactionTestCase): with connection.cursor() as cursor: desc = connection.introspection.get_table_description(cursor, Country._meta.db_table) self.assertIn( - connection.features.introspected_small_auto_field_type, + connection.features.introspected_field_types['SmallAutoField'], [connection.introspection.get_field_type(r[1], r) for r in desc], ) diff --git a/tests/schema/tests.py b/tests/schema/tests.py index 9aa1e239ac..0e479b5f1d 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -559,7 +559,7 @@ class SchemaTests(TransactionTestCase): columns = self.column_classes(Author) # BooleanField are stored as TINYINT(1) on MySQL. field_type = columns['awesome'][0] - self.assertEqual(field_type, connection.features.introspected_boolean_field_type) + self.assertEqual(field_type, connection.features.introspected_field_types['BooleanField']) def test_add_field_default_transform(self): """ |
