diff options
| author | Jacek Bzdak <jbzdak@gmail.com> | 2015-11-06 17:29:23 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-11-25 13:17:24 -0500 |
| commit | 834ad41472e240e951230e52aa698ae7a3d52eb9 (patch) | |
| tree | 4d07a0700490acca794441aeddc3b4a15abe5f22 /tests | |
| parent | 108038f2b44d8b30fccc419598a8add8cf3f8240 (diff) | |
[1.8.x] Fixed #25274 --- Made inspectdb handle renamed fields in unique_together.
Backport of 2cb50f935aa70e91dd6c2f253becd636a2eb6fb7 from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/inspectdb/models.py | 9 | ||||
| -rw-r--r-- | tests/inspectdb/tests.py | 13 |
2 files changed, 20 insertions, 2 deletions
diff --git a/tests/inspectdb/models.py b/tests/inspectdb/models.py index 9cc0a196a5..3e9bcb82d0 100644 --- a/tests/inspectdb/models.py +++ b/tests/inspectdb/models.py @@ -73,6 +73,13 @@ class ColumnTypes(models.Model): class UniqueTogether(models.Model): field1 = models.IntegerField() field2 = models.CharField(max_length=10) + from_field = models.IntegerField(db_column='from') + non_unique = models.IntegerField(db_column='non__unique_column') + non_unique_0 = models.IntegerField(db_column='non_unique__column') class Meta: - unique_together = ('field1', 'field2') + unique_together = [ + ('field1', 'field2'), + ('from_field', 'field1'), + ('non_unique', 'non_unique_0'), + ] diff --git a/tests/inspectdb/tests.py b/tests/inspectdb/tests.py index e35fe0bd48..4b34fff479 100644 --- a/tests/inspectdb/tests.py +++ b/tests/inspectdb/tests.py @@ -226,7 +226,18 @@ class InspectDBTestCase(TestCase): table_name_filter=lambda tn: tn.startswith('inspectdb_uniquetogether'), stdout=out) output = out.getvalue() - self.assertIn(" unique_together = (('field1', 'field2'),)", output, msg='inspectdb should generate unique_together.') + unique_re = re.compile(r'.*unique_together = \((.+),\).*') + unique_together_match = re.findall(unique_re, output) + # There should be one unique_together tuple. + self.assertEqual(len(unique_together_match), 1) + fields = unique_together_match[0] + # Fields with db_column = field name. + self.assertIn("('field1', 'field2')", fields) + # Fields from columns whose names are Python keywords. + self.assertIn("('field1', 'field2')", fields) + # Fields whose names normalize to the same Python field name and hence + # are given an integer suffix. + self.assertIn("('non_unique_column', 'non_unique_column_0')", fields) @skipUnless(connection.vendor == 'sqlite', "Only patched sqlite's DatabaseIntrospection.data_types_reverse for this test") |
