diff options
Diffstat (limited to 'tests/regressiontests/multiple_database/tests.py')
| -rw-r--r-- | tests/regressiontests/multiple_database/tests.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/regressiontests/multiple_database/tests.py b/tests/regressiontests/multiple_database/tests.py index dc668eab5b..fd6e64476d 100644 --- a/tests/regressiontests/multiple_database/tests.py +++ b/tests/regressiontests/multiple_database/tests.py @@ -674,6 +674,11 @@ class AuthRouter(object): return False return None +class WriteRouter(object): + # A router that only expresses an opinion on writes + def db_for_write(self, model, **hints): + return 'writer' + class RouterTestCase(TestCase): multi_db = True @@ -724,6 +729,37 @@ class RouterTestCase(TestCase): self.assertTrue(router.allow_syncdb('other', User)) self.assertFalse(router.allow_syncdb('other', Book)) + def test_partial_router(self): + "A router can choose to implement a subset of methods" + dive = Book.objects.using('other').create(title="Dive into Python", + published=datetime.date(2009, 5, 4)) + + # First check the baseline behaviour + + self.assertEquals(router.db_for_read(User), 'other') + self.assertEquals(router.db_for_read(Book), 'other') + + self.assertEquals(router.db_for_write(User), 'default') + self.assertEquals(router.db_for_write(Book), 'default') + + self.assertTrue(router.allow_relation(dive, dive)) + + self.assertTrue(router.allow_syncdb('default', User)) + self.assertTrue(router.allow_syncdb('default', Book)) + + router.routers = [WriteRouter(), AuthRouter(), TestRouter()] + + self.assertEquals(router.db_for_read(User), 'other') + self.assertEquals(router.db_for_read(Book), 'other') + + self.assertEquals(router.db_for_write(User), 'writer') + self.assertEquals(router.db_for_write(Book), 'writer') + + self.assertTrue(router.allow_relation(dive, dive)) + + self.assertFalse(router.allow_syncdb('default', User)) + self.assertTrue(router.allow_syncdb('default', Book)) + def test_database_routing(self): marty = Person.objects.using('default').create(name="Marty Alchin") |
