summaryrefslogtreecommitdiff
path: root/tests/regressiontests/multiple_database/tests.py
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2010-01-27 07:56:53 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2010-01-27 07:56:53 +0000
commitc8873bbba76bc52ab0766f98e8537b2fa66be71c (patch)
tree19f6869479e3e4107f7fe3d12d28dc0a906006a5 /tests/regressiontests/multiple_database/tests.py
parentb0d218e9e26febb35fcb91ad1c748b95674f1e59 (diff)
Made the database master router tolerant of router definitions that omit individual routing methods.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12304 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/multiple_database/tests.py')
-rw-r--r--tests/regressiontests/multiple_database/tests.py36
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")