diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/gis_tests/layermap/tests.py | 5 | ||||
| -rw-r--r-- | tests/multiple_database/tests.py | 25 |
2 files changed, 29 insertions, 1 deletions
diff --git a/tests/gis_tests/layermap/tests.py b/tests/gis_tests/layermap/tests.py index 1ebeeb31c6..2406533e66 100644 --- a/tests/gis_tests/layermap/tests.py +++ b/tests/gis_tests/layermap/tests.py @@ -319,7 +319,10 @@ class OtherRouter: return self.db_for_read(model, **hints) def allow_relation(self, obj1, obj2, **hints): - return None + # ContentType objects are created during a post-migrate signal while + # performing fixture teardown using the default database alias and + # don't abide by the database specified by this router. + return True def allow_migrate(self, db, app_label, **hints): return True 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 |
