summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJacek Bzdak <jbzdak@gmail.com>2015-11-06 17:29:23 +0100
committerTim Graham <timograham@gmail.com>2015-11-25 13:15:35 -0500
commit023bf66bff8aa09e67c7d397707d46d67ecc2c55 (patch)
treec2ae07c78d990dfc10f3981060aa6c3198c17828 /tests
parente2231075ebeb04b529b9dd5136b6f70eaaf89cfa (diff)
[1.9.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.py9
-rw-r--r--tests/inspectdb/tests.py16
2 files changed, 20 insertions, 5 deletions
diff --git a/tests/inspectdb/models.py b/tests/inspectdb/models.py
index f7d365b868..ff2fbd6c09 100644
--- a/tests/inspectdb/models.py
+++ b/tests/inspectdb/models.py
@@ -72,6 +72,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 db55d68493..06eb2c82f8 100644
--- a/tests/inspectdb/tests.py
+++ b/tests/inspectdb/tests.py
@@ -234,10 +234,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")