diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2010-04-16 12:29:23 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2010-04-16 12:29:23 +0000 |
| commit | 2cd48bac7ee7a5c4dded039439f9b6aaf566696e (patch) | |
| tree | e3c27de17d7889da09c1bbbdbebfe8ac59c0ad49 /tests/regressiontests/multiple_database | |
| parent | 94a968cfc60e16d3fa8180ae76dce35bc931e374 (diff) | |
Fixed #13358 -- Ensured that db_manager() can be used to override database routing on M2M, reverse FK and generic key queries. Thanks to Craig Kimerer for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12993 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/multiple_database')
| -rw-r--r-- | tests/regressiontests/multiple_database/tests.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/regressiontests/multiple_database/tests.py b/tests/regressiontests/multiple_database/tests.py index 0aac69401a..e4929f4742 100644 --- a/tests/regressiontests/multiple_database/tests.py +++ b/tests/regressiontests/multiple_database/tests.py @@ -1186,6 +1186,45 @@ class RouterTestCase(TestCase): nyt = dive.reviews.create(source="New York Times", content_object=dive) self.assertEquals(nyt._state.db, 'default') + def test_m2m_managers(self): + "M2M relations are represented by managers, and can be controlled like managers" + pro = Book.objects.using('other').create(pk=1, title="Pro Django", + published=datetime.date(2008, 12, 16)) + + marty = Person.objects.using('other').create(pk=1, name="Marty Alchin") + pro.authors = [marty] + + self.assertEquals(pro.authors.db, 'other') + self.assertEquals(pro.authors.db_manager('default').db, 'default') + self.assertEquals(pro.authors.db_manager('default').all().db, 'default') + + self.assertEquals(marty.book_set.db, 'other') + self.assertEquals(marty.book_set.db_manager('default').db, 'default') + self.assertEquals(marty.book_set.db_manager('default').all().db, 'default') + + def test_foreign_key_managers(self): + "FK reverse relations are represented by managers, and can be controlled like managers" + marty = Person.objects.using('other').create(pk=1, name="Marty Alchin") + pro = Book.objects.using('other').create(pk=1, title="Pro Django", + published=datetime.date(2008, 12, 16), + editor=marty) + + self.assertEquals(marty.edited.db, 'other') + self.assertEquals(marty.edited.db_manager('default').db, 'default') + self.assertEquals(marty.edited.db_manager('default').all().db, 'default') + + def test_generic_key_managers(self): + "Generic key relations are represented by managers, and can be controlled like managers" + pro = Book.objects.using('other').create(title="Pro Django", + published=datetime.date(2008, 12, 16)) + + review1 = Review.objects.using('other').create(source="Python Monthly", + content_object=pro) + + self.assertEquals(pro.reviews.db, 'other') + self.assertEquals(pro.reviews.db_manager('default').db, 'default') + self.assertEquals(pro.reviews.db_manager('default').all().db, 'default') + def test_subquery(self): """Make sure as_sql works with subqueries and master/slave.""" # Create a book and author on the other database |
