From 8e8c0792c07f6dfbee5115d29911191adee04f2e Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Sat, 8 Aug 2015 11:52:39 -0400 Subject: [PATCH] Refs #18081 -- Asserted db constraints are created for fk to proxy models. --- tests/schema/tests.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/schema/tests.py b/tests/schema/tests.py index 9e0731cf4f..3c7bf96605 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -177,6 +177,36 @@ class SchemaTests(TransactionTestCase): else: self.fail("No FK constraint for author_id found") + @skipUnlessDBFeature('supports_foreign_keys') + def test_fk_to_proxy(self): + "Tests that creating a FK to a proxy model creates database constraints." + class AuthorProxy(Author): + class Meta: + app_label = 'schema' + apps = new_apps + proxy = True + + class AuthorRef(Model): + author = ForeignKey(AuthorProxy, on_delete=CASCADE) + + class Meta: + app_label = 'schema' + apps = new_apps + + self.local_models = [AuthorProxy, AuthorRef] + + # Create the table + with connection.schema_editor() as editor: + editor.create_model(Author) + editor.create_model(AuthorRef) + constraints = self.get_constraints(AuthorRef._meta.db_table) + for details in constraints.values(): + if details['columns'] == ['author_id'] and details['foreign_key']: + self.assertEqual(details['foreign_key'], ('schema_author', 'id')) + break + else: + self.fail('No FK constraint for author_id found') + @skipUnlessDBFeature('supports_foreign_keys') def test_fk_db_constraint(self): "Tests that the db_constraint parameter is respected"