summaryrefslogtreecommitdiff
path: root/tests/multiple_database
diff options
context:
space:
mode:
Diffstat (limited to 'tests/multiple_database')
-rw-r--r--tests/multiple_database/tests.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/multiple_database/tests.py b/tests/multiple_database/tests.py
index 6dd44f6475..e4cef8cdb9 100644
--- a/tests/multiple_database/tests.py
+++ b/tests/multiple_database/tests.py
@@ -2082,3 +2082,28 @@ class RouteForWriteTestCase(TestCase):
self.assertEqual(e.mode, RouterUsed.WRITE)
self.assertEqual(e.model, Book)
self.assertEqual(e.hints, {'instance': auth})
+
+
+class NoRelationRouter:
+ """Disallow all relations."""
+ def allow_relation(self, obj1, obj2, **hints):
+ return False
+
+
+@override_settings(DATABASE_ROUTERS=[NoRelationRouter()])
+class RelationAssignmentTests(TestCase):
+ """allow_relation() is called with unsaved model instances."""
+ multi_db = True
+ router_prevents_msg = 'the current database router prevents this relation'
+
+ def test_foreign_key_relation(self):
+ person = Person(name='Someone')
+ pet = Pet()
+ with self.assertRaisesMessage(ValueError, self.router_prevents_msg):
+ pet.owner = person
+
+ def test_reverse_one_to_one_relation(self):
+ user = User(username='Someone', password='fake_hash')
+ profile = UserProfile()
+ with self.assertRaisesMessage(ValueError, self.router_prevents_msg):
+ user.userprofile = profile