django-admin-interface/tests/test_multidb.py

36 lines
1.1 KiB
Python

from django.test import TestCase
from django.test.testcases import DatabaseOperationForbidden
from admin_interface.models import Theme
from .routers import DatabaseAppsRouter
class AdminInterfaceModelsWithDBRoutingTestCase(TestCase):
databases = ["replica"]
def test_standard_dbrouter(self):
router = DatabaseAppsRouter()
db_for_theme = router.db_for_read(Theme)
assert db_for_theme == "default"
def test_dbrouter_selects_correct_db(self):
DATABASE_APPS_MAPPING = {
"admin_interface": "replica",
}
router = DatabaseAppsRouter(db_map=DATABASE_APPS_MAPPING)
db_for_theme = router.db_for_read(Theme)
assert db_for_theme == "replica"
def test_dbrouter_errors_when_fetching_from_default(self):
with self.assertRaises(DatabaseOperationForbidden):
Theme.objects.get_active()
def test_dbrouter_fetches_db(self):
DATABASE_APPS_MAPPING = {
"admin_interface": "replica",
}
router = DatabaseAppsRouter(db_map=DATABASE_APPS_MAPPING)
with self.settings(DATABASE_ROUTERS=[router]):
Theme.objects.get_active()