diff options
| author | Tim Graham <timograham@gmail.com> | 2020-06-01 21:59:03 -0400 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-06-04 08:46:06 +0200 |
| commit | a7b4a04d6c54679cb0fbc8679367848bd7dae718 (patch) | |
| tree | a2c167644c4f6d3782ee7f6d9469ac1a58303dd4 /tests/inspectdb | |
| parent | e24b63fe859c03c429ebeb7d28665f591cee22ff (diff) | |
Refs #31630 -- Added CharField and IntegerField to DatabaseFeatures.introspected_field_types.
CockroachDB introspects CharField as TextField and IntegerField as
BigIntegerField.
Diffstat (limited to 'tests/inspectdb')
| -rw-r--r-- | tests/inspectdb/tests.py | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/tests/inspectdb/tests.py b/tests/inspectdb/tests.py index 583512cc09..83326e96c0 100644 --- a/tests/inspectdb/tests.py +++ b/tests/inspectdb/tests.py @@ -61,10 +61,10 @@ class InspectDBTestCase(TestCase): """Test introspection of various Django field types""" assertFieldType = self.make_field_type_asserter() introspected_field_types = connection.features.introspected_field_types - + char_field_type = introspected_field_types['CharField'] # Inspecting Oracle DB doesn't produce correct results (#19884): # - it reports fields as blank=True when they aren't. - if not connection.features.interprets_empty_strings_as_nulls: + if not connection.features.interprets_empty_strings_as_nulls and char_field_type == 'CharField': assertFieldType('char_field', "models.CharField(max_length=10)") assertFieldType('null_char_field', "models.CharField(max_length=10, blank=True, null=True)") assertFieldType('email_field', "models.CharField(max_length=254)") @@ -73,6 +73,15 @@ class InspectDBTestCase(TestCase): assertFieldType('slug_field', "models.CharField(max_length=50)") assertFieldType('text_field', "models.TextField()") assertFieldType('url_field', "models.CharField(max_length=200)") + if char_field_type == 'TextField': + assertFieldType('char_field', 'models.TextField()') + assertFieldType('null_char_field', 'models.TextField(blank=True, null=True)') + assertFieldType('email_field', 'models.TextField()') + assertFieldType('file_field', 'models.TextField()') + assertFieldType('file_path_field', 'models.TextField()') + assertFieldType('slug_field', 'models.TextField()') + assertFieldType('text_field', 'models.TextField()') + assertFieldType('url_field', 'models.TextField()') assertFieldType('date_field', "models.DateField()") assertFieldType('date_time_field', "models.DateTimeField()") if introspected_field_types['GenericIPAddressField'] == 'GenericIPAddressField': @@ -117,7 +126,7 @@ class InspectDBTestCase(TestCase): "as this database handles decimal fields as float") assertFieldType('float_field', "models.FloatField()") - assertFieldType('int_field', "models.IntegerField()") + assertFieldType('int_field', 'models.%s()' % introspected_field_types['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']) @@ -152,19 +161,20 @@ class InspectDBTestCase(TestCase): def test_digits_column_name_introspection(self): """Introspection of column names consist/start with digits (#16536/#17676)""" + char_field_type = connection.features.introspected_field_types['CharField'] out = StringIO() call_command('inspectdb', 'inspectdb_digitsincolumnname', stdout=out) output = out.getvalue() error_message = "inspectdb generated a model field name which is a number" - self.assertNotIn(" 123 = models.CharField", output, msg=error_message) - self.assertIn("number_123 = models.CharField", output) + self.assertNotIn(' 123 = models.%s' % char_field_type, output, msg=error_message) + self.assertIn('number_123 = models.%s' % char_field_type, output) error_message = "inspectdb generated a model field name which starts with a digit" - self.assertNotIn(" 4extra = models.CharField", output, msg=error_message) - self.assertIn("number_4extra = models.CharField", output) + self.assertNotIn(' 4extra = models.%s' % char_field_type, output, msg=error_message) + self.assertIn('number_4extra = models.%s' % char_field_type, output) - self.assertNotIn(" 45extra = models.CharField", output, msg=error_message) - self.assertIn("number_45extra = models.CharField", output) + self.assertNotIn(' 45extra = models.%s' % char_field_type, output, msg=error_message) + self.assertIn('number_45extra = models.%s' % char_field_type, output) def test_special_column_name_introspection(self): """ @@ -175,12 +185,13 @@ class InspectDBTestCase(TestCase): call_command('inspectdb', table_name_filter=special_table_only, stdout=out) output = out.getvalue() base_name = connection.introspection.identifier_converter('Field') - self.assertIn("field = models.IntegerField()", output) - self.assertIn("field_field = models.IntegerField(db_column='%s_')" % base_name, output) - self.assertIn("field_field_0 = models.IntegerField(db_column='%s__')" % base_name, output) - self.assertIn("field_field_1 = models.IntegerField(db_column='__field')", output) - self.assertIn("prc_x = models.IntegerField(db_column='prc(%) x')", output) - self.assertIn("tamaño = models.IntegerField()", output) + integer_field_type = connection.features.introspected_field_types['IntegerField'] + self.assertIn("field = models.%s()" % integer_field_type, output) + self.assertIn("field_field = models.%s(db_column='%s_')" % (integer_field_type, base_name), output) + self.assertIn("field_field_0 = models.%s(db_column='%s__')" % (integer_field_type, base_name), output) + self.assertIn("field_field_1 = models.%s(db_column='__field')" % integer_field_type, output) + self.assertIn("prc_x = models.{}(db_column='prc(%) x')".format(integer_field_type), output) + self.assertIn("tamaño = models.%s()" % integer_field_type, output) def test_table_name_introspection(self): """ |
